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 EAD2EC4167B for ; Thu, 7 Dec 2023 23:57:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 50CDD6B0072; Thu, 7 Dec 2023 18:57:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4BCA16B0074; Thu, 7 Dec 2023 18:57:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3AB5B6B0075; Thu, 7 Dec 2023 18:57:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 2B4056B0072 for ; Thu, 7 Dec 2023 18:57:15 -0500 (EST) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id EBB4A1202AC for ; Thu, 7 Dec 2023 23:57:14 +0000 (UTC) X-FDA: 81541685988.03.C59F82E Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf03.hostedemail.com (Postfix) with ESMTP id 63AC12000E for ; Thu, 7 Dec 2023 23:57:12 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=gqhWqtmp; dmarc=none; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701993433; 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=YO6MVl02oBiITEYrEywlC3LVDyTUqOlWipn5vN0fmhA=; b=46lqEIJ2dlUmxKZ+ecycAMmcHeJ73Bmsyb34jP2yfcSEXsyMG+dRucFOcF8jHeJ0wnkJOz pm6A2S5WlT1VT8i0c/iSD5y+jI4fSrqSRQD4yUTxI2EBjGWBqsOJZoWh2MpMJBS4zd+9d+ 9t16wBtGsqa1zP7xU8e4bHvpoVF/JJg= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=gqhWqtmp; dmarc=none; spf=none (imf03.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701993433; a=rsa-sha256; cv=none; b=DGjTtyA8vH5z+Rrtp6PuumGDkIaAvp71l0I+zFeZVInTjlq87DE0G1utj0MLTyggaQ3+P3 lPxvc3jaH5YAlWTFoTKYU3wVRejxDrkvzWYJFKqCTwwdDTdgbFDTOLjeCBTc6DX022gRV9 qjI9A0LJ6UgFGLno1EIrkpDYvOZaeO8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; 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=YO6MVl02oBiITEYrEywlC3LVDyTUqOlWipn5vN0fmhA=; b=gqhWqtmpvP9SALAF/Q1zmqoGHm HxMwUKrMpAPGfReElYZa/S3TvjzUkkyxt10c7razZ5wU/hSxDRc3RN+qkzI4JtEhv37wXZd9YSbbS jmePUN0WrspPoPUXkxLQOf7YyHxFy1OiHeXOzAdUxMBynWUHg342NjmGGP19/c1f9GAzvI+qJMQYw n4937Xk5nGkIBOJPaceqsLyaBJkOgp/i2Yeaa/1eCg4UW6P61UajreLPS91lO2endUQfeifDbnTti kRHruEUK3J0P+gpL56LlxdthWqnXJR3WCc6ztejMQz4wuBkPMZW5ovM7EQDeY0a9vMaw1w0ZXJUcU e9k8dAbg==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1rBOEp-004cCW-JH; Thu, 07 Dec 2023 23:57:03 +0000 Date: Thu, 7 Dec 2023 23:57:03 +0000 From: Matthew Wilcox To: Keith Busch Cc: Jens Axboe , Andrew Morton , "Kirill A . Shutemov" , Hugh Dickins , linux-mm@kvack.org, linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH] block: Remove special-casing of compound pages Message-ID: References: <20230814144100.596749-1-willy@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 63AC12000E X-Stat-Signature: zhcr59s7zcqpg4ewiyq9fgy9a1eaz93h X-Rspam-User: X-HE-Tag: 1701993432-96671 X-HE-Meta: U2FsdGVkX182gkX7FGy3LceRavJm4TgwfL46dBi3oAV+xf0d6baRGUb9hKAG+Ohpeqv7Td7fE4nqpo887i+rxTuZtIUSHhL2ZYOLRzvFjD+xhb9EDX4wZTgpgZ5XUvkPNN13qNqXNjotp92VLuTfy9EQTmfUYZTWtWY2AJrr4lgh269p0UZS6WxF5vWd6gFmBpYnykq3uOJgn4sWRBmSe78UoKIbFM0ueinzDHH3LKPoRqQofRh5pIPyJPzc55Xkgo/qsHEI/ZL+1LYOri/0T0MulcF/kHGaGSt5QELZ+uB1EANLC8dmrT9E1oRH1BRA/YFrP0pUbxHSaLGPjm17FJzxaqft2kjnDCgNUUKuatICvKsB/QUxwdBPhOg+UIiI4AB4WPRsFhsJyQzKeyU/7EgGZzHBUWMwb5Vhnbpf6FZAWqdMHU3owLJ6BfQnDQgJTdALqtp1pxFoXZANfb4T0Trnxi2p7pr2sicZG91GSdL37zn9cTF3s0tkqw++r3pTpbiwL0LdPqQEImv9f0WO0GyxlRY19zGT+zy8FbuRPIaZffq5AnQq+N5bgMGBNJyrvQ8A3XAIVMUfHcA8bL4/sczTYRD+daH5WNaTspc5c1KwpRWIhxENkewBkPLXE4SD5HUIvcBS/dIJEswKD/KBXyHjZMRRnrGLBlL6zj+l4lKU3MEIEvjy9nDlRUBdIg5j2UIsVf4DkKXRnzwmVfj6p8/Vzf7tjBhCYep4jkvCgxTpz4YhsbU5v90hcjQeO68n3V8j5Hy7rn/n68LqR4bDZe6kPrw72g4QHEtPy7m0JHP0FIXofn5YEakXmxY+uoMAZYIQcgRa8zeYP2Ak4c13q8sWHhRDirU18cjNq6/8lceTiELtt2hhlCMBoUbAEKDsuWG30NL0LSqOMz83adw0QOLALToPoLp6/5Fo3k3euf7skwQw3ZdoAtYWRP6i7tVxXlNNTa7GDyfy49I+wqL 0/axGiNz Ztg3FM6/8SyuPbNqNkNEjb6yOvuZJ2USARx0xyHT1n1MKuF2SJk56KoESFMV5/qqUrX9x8SFTYY552OqYq1nAyFY30EA2GRNsf+t6wqSYDk8A/r0+4Tzm3o7gmbf55N2MbGjmzRCF7TEa2SM= X-Bogosity: Ham, tests=bogofilter, spamicity=0.023866, 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, Dec 07, 2023 at 03:10:13PM -0700, Keith Busch wrote: > On Mon, Aug 14, 2023 at 03:41:00PM +0100, Matthew Wilcox (Oracle) wrote: > > void __bio_release_pages(struct bio *bio, bool mark_dirty) > > { > > - struct bvec_iter_all iter_all; > > - struct bio_vec *bvec; > > + struct folio_iter fi; > > + > > + bio_for_each_folio_all(fi, bio) { > > + struct page *page; > > + size_t done = 0; > > > > - bio_for_each_segment_all(bvec, bio, iter_all) { > > - if (mark_dirty && !PageCompound(bvec->bv_page)) > > - set_page_dirty_lock(bvec->bv_page); > > - bio_release_page(bio, bvec->bv_page); > > + if (mark_dirty) { > > + folio_lock(fi.folio); > > + folio_mark_dirty(fi.folio); > > + folio_unlock(fi.folio); > > + } > > + page = folio_page(fi.folio, fi.offset / PAGE_SIZE); > > + do { > > + bio_release_page(bio, page++); > > + done += PAGE_SIZE; > > + } while (done < fi.length); > > } > > } > > Is it okay to release same-folio pages while creating the bio instead of > releasing all the pages at the completion? If so, the completion could > provide just the final bio_release_page() instead looping. I'm more > confirming if that's an appropriate way to use folios here. For this patch, I'm just replicating the existing behaviour. We can probably do much better. Honestly, the whole thing is kind of grotesque and needs to be reformed ... but I think that's part of the physr project.