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 56E06C64EC4 for ; Mon, 6 Mar 2023 16:53:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BAC636B0071; Mon, 6 Mar 2023 11:53:15 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B35196B0072; Mon, 6 Mar 2023 11:53:15 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D4DB6B0073; Mon, 6 Mar 2023 11:53:15 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 87BB66B0071 for ; Mon, 6 Mar 2023 11:53:15 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5AE71120912 for ; Mon, 6 Mar 2023 16:53:15 +0000 (UTC) X-FDA: 80539068750.07.85F970F Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf18.hostedemail.com (Postfix) with ESMTP id 2CC4D1C0022 for ; Mon, 6 Mar 2023 16:53:11 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=4W+naTxV; spf=none (imf18.hostedemail.com: domain of BATV+3af329ecaf5669c1f4c9+7134+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+3af329ecaf5669c1f4c9+7134+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678121593; 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=mJSF1Ywx6z0mGMzdYzVD02f9wlhXiIbZLi0DEBUkFeU=; b=tNhYtFOeexQD7GF2D55FTQjThJOVSPaAYT1l/5nMfsf4hLuTnwGEeyotWmAgvKanOoIPIt 2rgIpM2WqSpbu3xFYFMoxNneTWH4Xui9kjwQ+U9vw6HejRtCgvX0iXujZgrraWtv38T8Rq OAmc5fBYDOqpm/LgPRt4TBHX32pw/ok= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=4W+naTxV; spf=none (imf18.hostedemail.com: domain of BATV+3af329ecaf5669c1f4c9+7134+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+3af329ecaf5669c1f4c9+7134+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678121593; a=rsa-sha256; cv=none; b=Qs7ryPTIlBcpcdAo3Dx28dNc/mNZkKgmOoPrbPgwr3j/K5UZZpEmPUbOuguxi9hQNZ3Tkx IHfcaMNtr4XIJ0lv285XYiff2WFBYPG0b8KG7uQk8XyIKgWzCfkJibVUqAFXMeQy9U0nO6 aBPAEYpBJLAouXWP6QeT2rCHzz2720U= 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=mJSF1Ywx6z0mGMzdYzVD02f9wlhXiIbZLi0DEBUkFeU=; b=4W+naTxVvLaKelVIlzOADVjTbz zbCaq2xAMhoc7OJy1f/RCDyXZT4VA4nFUh6Ad2O9b6XMv5hTB0DjrLhd1nhvy2vGf2JAbiCGAefDa 1ERMrudAE+Nc4OleRwkXKoYBxjgignNHljhMKq7xs8taw1O7hhPFBCBrfRNuL7ggu7hcmWqVUnypN YHZCRxKHA2Cza5puDW/i46JF61Yl8qFc/6rsFrLut8hhD4XmTKXHRvR6Y3WYX8b25O+MVt9V6wMBu Lf9p6vplwjrvaI4z1gec6K+JUzilD9SJVASZdkLIYX566D/ZMoycan7ww4Yad0wBdNQBU4fiwtFg5 vv97/kng==; Received: from hch by bombadil.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pZE58-00E0hR-CA; Mon, 06 Mar 2023 16:53:02 +0000 Date: Mon, 6 Mar 2023 08:53:02 -0800 From: Christoph Hellwig To: Goldwyn Rodrigues Cc: linux-btrfs@vger.kernel.org, Goldwyn Rodrigues , linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, Matthew Wilcox Subject: Re: [PATCH 01/21] fs: readahead_begin() to call before locking folio Message-ID: References: <4b8c7d11d7440523dba12205a88b7d43f61a07b1.1677793433.git.rgoldwyn@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4b8c7d11d7440523dba12205a88b7d43f61a07b1.1677793433.git.rgoldwyn@suse.com> X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: gc7odb4fi9da7k7mknheabqs4xk4enpd X-Rspamd-Queue-Id: 2CC4D1C0022 X-HE-Tag: 1678121591-121595 X-HE-Meta: U2FsdGVkX19rMD7D98IMvr3MG6GvPZ8gZjvtjzobfUFUkeD2boR1jc0UP7hCu7s8tnkHkezsyQyA5zqaaoE1wKn6vlfk0BI6HbIMLW0LYAurcu9vvpBnvXK1rq62+aHCCq/mCnK1ZeVMgMTrX2frPS4XVahl3/FVgoS171h8pJWBIUigmsdVYby5Y1GFZcpNX6awBbObsz1aOHGRW7hJwvsUfSakM88dejQDZTzhcgA1WyZmXajqfFxfjUougMYwnxWFSQLBpbMSDzomBPpjXUigSMqXMpu85lvBvO32S+IsvkyNm3YPdAmMHLwvH5elAnuLqeyE45OhbEQDXsfiEFJ5DzdlDaHlCTPRZMBKWNNkBhD06hlJSVvHD/M2HclegKMMoGI8W2qF8hNcEKb8YrSwVVYNSy0QGmWfXss6PtcPfYnX2PCK6y1/iHdbz3WW9YD6nBkYJq0Kfqciq4oyTaae8BIidDkkYS3SMb7wmZT5iRmRJ8vNcosi6r68mJC26N17HFGLxZJGapLMel7nMIutV4dmqUE8cu23Q50SB+K7nvov7y6jchhSsK0Y7rKnxUQF80XAp80ZMODSIpk2mTUI7BXp4lBxAp1P+/uFYJW/F16muihyiSF4aZQ27QDGv3j0FkT4hMi/uDVgn+6w+PPRplZ2VmkIZKYWQ7GRuUqmuXacFxCMeRMTlA4DVq3POAMMNEqjgOULztTRf0QYWKiGSVjgw/ElpAERPEFg1oq+6NKxDaiPVgVasdP9YvsQIr+j3airlYo4p0eMOxkY7IEX+zr8rTK9LSLmuYvlOTrePISYETY+lbcfwGfmXMupJZCanRch4VpZBIH5qW2GlzaCXRUYB32beramduCCZyCjcpjQdmSG7Mw8T/+VQAtI5ZsDuLcmtYUIp/RxfGN9ixUtjRNj4QKQ7iTUXqn9ObvYNHqR0iTIaY1IuSS2PWjzwQ+36FGjzNoiBp1sCQJ /tWLBeOi V4S6WeadNHgztG1bIbgPbFgI4kyUmPungCxLwmEXP3RTt3TpM8Vs5VYH/EbnX/UmKPX2owmzOxgwob28KXe6IBUb7TiskQhos2OGMGl3bBYIBTycAQwM0EHC7Vl+kzEbKMdvY8D6iXbQBXKM9OaZGjQ0AIN7/SGWSOtgHDyKRrB6rJu/BL5qDrE5ofTErcQzCSkOqpF5cwnBaVrlJ96JNqySh6Qo32LkEX1m9afY+U3dP+2mg51UtuR3BQNKyJFgGUjW6YVs3THJUNdZOX+MW8d+pBNRV16pgQLX/JaON86MSWJLFsPsO1wifvhsvzRWqwNC65yJihEiYcCq76BZQRNMTyNgF79yVK7d7zqJeQ9vo7TfTkbF8BGRtf1iaGMtcQB6BupitDerRJrfEvrl9fKcxxcYyqe9yeriOOTyQQhGOv9JGnt1oZJEaJ+KkmcO+WvS8O2eV3G24R1+U/ratIIPH3PDJyiSCutJZcFwHwaiUsiOSgye2jpVy2xnFIXjOLAuI 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 Thu, Mar 02, 2023 at 04:24:46PM -0600, Goldwyn Rodrigues wrote: > From: Goldwyn Rodrigues > > The btrfs filesystem needs to lock the extents before locking folios > to be read from disk. So, introduce a function in > address_space_operaitons, called btrfs_readahead_begin() which is called > before the folio are allocateed and locked. Please Cc the mm and fsdevel and willy on these kinds of changes. But I'd also like to take this opportunity to ask what the rationale behind the extent locking for reads in btrfs is to start with. All other file systems rely on filemap_invalidate_lock_shared for locking page reads vs invalidates and it seems to work great. btrfs creates a lot of overhead with the extent locking, and introduces a lot of additional trouble like the readahead code here, or the problem with O_DIRECT writes that read from the same region that Boris recently fixed. Maybe we can think really hard and find a way to normalize the locking and simply both btrfs and common infrastructure? > --- > include/linux/fs.h | 1 + > mm/readahead.c | 3 +++ > 2 files changed, 4 insertions(+) > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index c1769a2c5d70..6b650db57ca3 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -363,6 +363,7 @@ struct address_space_operations { > /* Mark a folio dirty. Return true if this dirtied it */ > bool (*dirty_folio)(struct address_space *, struct folio *); > > + void (*readahead_begin)(struct readahead_control *); > void (*readahead)(struct readahead_control *); > > int (*write_begin)(struct file *, struct address_space *mapping, > diff --git a/mm/readahead.c b/mm/readahead.c > index b10f0cf81d80..6924d5fed350 100644 > --- a/mm/readahead.c > +++ b/mm/readahead.c > @@ -520,6 +520,9 @@ void page_cache_ra_order(struct readahead_control *ractl, > new_order--; > } > > + if (mapping->a_ops->readahead_begin) > + mapping->a_ops->readahead_begin(ractl); > + > filemap_invalidate_lock_shared(mapping); > while (index <= limit) { > unsigned int order = new_order; > -- > 2.39.2 > ---end quoted text---