From patchwork Tue Aug 1 17:21:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13337123 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 8990CC04A94 for ; Tue, 1 Aug 2023 17:50:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 183AA940046; Tue, 1 Aug 2023 13:50:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 133C7940010; Tue, 1 Aug 2023 13:50:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F3D8B940046; Tue, 1 Aug 2023 13:50:19 -0400 (EDT) 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 E7600940010 for ; Tue, 1 Aug 2023 13:50:19 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 748361C9CCF for ; Tue, 1 Aug 2023 17:50:18 +0000 (UTC) X-FDA: 81076274916.23.FA4D407 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf26.hostedemail.com (Postfix) with ESMTP id DF422141BDB for ; Tue, 1 Aug 2023 17:22:13 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=Vm2OJfte; spf=none (imf26.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+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=1690910534; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PsY+MbsgOeBE0qNyqxA2FkxVtq6lybIS3fnERYydddM=; b=VFSDEQmByKvuwjNXcFrZ27iVxzRGsnmJf8MOBovRODterJ8QvTjgoJJYEXA0FxAyw4P7Af /3gYQLvZwfkDPTKvQJLJNWP9rsa6I71jL8tmAdN0TqsCZt7DbyBk2afawdx/iJAaWfw6ZU C0IwUOTPPMLvuRSaOO78wXNbSBguK9M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690910534; a=rsa-sha256; cv=none; b=pVs8WjoUDQX33nYAxl7efe0PR+bGlmN8mbf0UAryIE5sKIkjz/KOyTN6T/ewhfcAGEskX7 7hFQ5XpmdUDiLZYWEZ70HrcwBH60j2Dsey0jXl7y4XIdT/6Skfc4VymTx2az1XlZTAhd/4 ATi0yfbLX6ty/z+RLKBVPlBhfRlws8I= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=Vm2OJfte; spf=none (imf26.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=PsY+MbsgOeBE0qNyqxA2FkxVtq6lybIS3fnERYydddM=; b=Vm2OJftemIv4WoAk6AEE6ZcO5i fsFmLxN+lpMVYKPMrkHZENthIa8UahNL3cLi+lK/VIoQ0YiHk0yCIsdjW7SowEcIlwNmLeTE0QdTI m+L4Pvh2EYfzvZBvlWCuql/FkIPW5jgRoClg1WW7q/vHckPhGrXvNGtRLrDIHzCFHwPGqvXzRAKmN PwA6uiR7Ea3RKuLMIwCcTXz/xHRQnVbFI8Dyox0KJOoLceF4R8Ex6uJ7VEyjBCTxW3eojgvhzs0w/ cLJcr01OMPrcs+GEIChFmlOYmQAL1sW3bEAMck8+vMh2L/HaB3j5V1IhDJoMoDba+iNPVLSOdKo+E Oa46YRew==; Received: from 2a02-8389-2341-5b80-39d3-4735-9a3c-88d8.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:39d3:4735:9a3c:88d8] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qQt4T-002uUH-14; Tue, 01 Aug 2023 17:22:09 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Luis Chamberlain , Hannes Reinecke , Johannes Thumshirn Subject: [PATCH 1/6] fs: remove emergency_thaw_bdev Date: Tue, 1 Aug 2023 19:21:56 +0200 Message-Id: <20230801172201.1923299-2-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801172201.1923299-1-hch@lst.de> References: <20230801172201.1923299-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Stat-Signature: i6xssnwwf7x7qfae99rhdzgar84p3puk X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: DF422141BDB X-Rspam-User: X-HE-Tag: 1690910533-722850 X-HE-Meta: U2FsdGVkX18GEUTWStfZZI3J8RxpNzPOLHsM4Uu6owQqqvJ/84ESrAYww1Y38CWssiuHV66sS42a6qw17eYoMosBaIbGdbGPd66Nc47WMfshn1hJ3rK5FXKQ9Y7UuSefoKUK25lJtirh7Id/jh4vFYLk6S/iBIMqDlx916p2G4kgYGhRJj+TNZawlzUGdcwSym2ECLbNljEuFRqeG/ImzRYQZ4WXanTVUrJdcVpABvmfsJzlAsJ0wIsbD0VoSJ+BpEPARY8E+yDmLWr3gXpkbw8ckw/4Fy6e5yK/hAvNneGrLvgz1AS1mRAc18XsnBQyuePz87IZsFvGMmb3I3wMldKFfJy6NZpFAF/4AjpugE2LrfUlZraj1ajNiYt78gyZKmGG8MrWV1KXeC/SgLeJdwU0RBs1dt7UoapOO0ntbKyJQBEUgiVxO3/EscidisjEtP+nmNpNXQt17I5AcyAhNzJrplENASkkbFqWCQT+80uAWWLbUgspsmcd/0J4pyPWokFujGC98cnA2K4+Ztsi8PBP3oCiMxRIyVmWmSKwJRthE+lpqgKBWvyqCEFRvitiftCKY+jlWT3AECH/R+IbKH76OquD+GUB9YxMl66Re9Jix6G6O+jWyA6mTdGC6DPHrLDmaITj5wefDy43vlY+A+4X+UxQYTbBvEMSwGdG6y4T1Cx6M8OaPw11o4ngk4uGkaFhNMyOA3VfTtQWV04u8CyE/V7erzlFg4fyPiqiq13wUrDPSSdQqhDVwJi7mscuD5ceQ2jkC766ztmCvFzGfRx/sxIRl/vsJnVvL+mBGv2uHGq/aZUzaUxnhe0NI3MhjXu6gRaRDerWae4LBcVktfkzGY5g/IAcZqyn8kkDvgHHreFwiDpSLCxk8hWhRfA/kRDwTDrAV8i5xFn8m1IB/wMDLP6RCx0caEqMKP5CHRHLmF+/490OBXAUimaRmCDLmZUNi5R+XTMuJKsO0ly /uv2PLcT nZ+LFJt0Crz/f7oE1S5ZAb6prL3D+v+UnkBlpeWmitt+NQ5n95eMgFyGooknUMh0RdtUSy9ls6RVjKnQRaAMSPdhCeXdZwW1eHK5X8oXuyYZKZMqmVOKcVQH1OdbbRchsOcD3tmhFiR7VgEAbvRnSGREWJ75Y+qIiozIAQ9TNek1JMLksr35hxVpsOTdVw4OzFDQcCbDNHKoCdx/K8UnmVbZK9lKIo4UHjzxtcoNFNleYe2EYEN6POkS0pCC0KMkquZztBUI37/otiBV4ST8FmWB8K6zcrcZDgfupwTl/UqQxp2pGhtWs+mdHdeYc4/FTCzG7PusRVMkJwMbytndwHZ+Tunv9WNrdLjbBNDlXOe7oZv6to6tYvDlVaM0OAMqUbYp4mXsax8mmgh82+SJ7/CV/LJHvmI7NU5rixSvj0YAp+VH6eibd+HnyKZx+zB//m9zkeFT6izW4z8B7UytCg6k7lOkDhcy8McYquPO8YC0vR9Is16WS9yYKkGFNIClvi9NUOsO1+uo4xlQeAhcneuTwvBdfRdU0p9kyZr3ZjfBa8MHNXQ7CPyOFIXmMguheQ600nbvOAYrIZvo= 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: Fold emergency_thaw_bdev into it's only caller, to prepare for buffer.c to be built only when buffer_head support is enabled. Signed-off-by: Christoph Hellwig Reviewed-by: Luis Chamberlain Reviewed-by: Hannes Reinecke Reviewed-by: Johannes Thumshirn Reviewed-by: Christian Brauner --- fs/buffer.c | 6 ------ fs/internal.h | 6 ------ fs/super.c | 4 +++- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/fs/buffer.c b/fs/buffer.c index bd091329026c0f..376f468e16662d 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -562,12 +562,6 @@ static int osync_buffers_list(spinlock_t *lock, struct list_head *list) return err; } -void emergency_thaw_bdev(struct super_block *sb) -{ - while (sb->s_bdev && !thaw_bdev(sb->s_bdev)) - printk(KERN_WARNING "Emergency Thaw on %pg\n", sb->s_bdev); -} - /** * sync_mapping_buffers - write out & wait upon a mapping's "associated" buffers * @mapping: the mapping which wants those buffers written diff --git a/fs/internal.h b/fs/internal.h index f7a3dc11102647..d538d832fd608b 100644 --- a/fs/internal.h +++ b/fs/internal.h @@ -23,16 +23,10 @@ struct mnt_idmap; */ #ifdef CONFIG_BLOCK extern void __init bdev_cache_init(void); - -void emergency_thaw_bdev(struct super_block *sb); #else static inline void bdev_cache_init(void) { } -static inline int emergency_thaw_bdev(struct super_block *sb) -{ - return 0; -} #endif /* CONFIG_BLOCK */ /* diff --git a/fs/super.c b/fs/super.c index e781226e28800c..bc666e7ee1a984 100644 --- a/fs/super.c +++ b/fs/super.c @@ -1029,7 +1029,9 @@ static void do_thaw_all_callback(struct super_block *sb) { down_write(&sb->s_umount); if (sb->s_root && sb->s_flags & SB_BORN) { - emergency_thaw_bdev(sb); + if (IS_ENABLED(CONFIG_BLOCK)) + while (sb->s_bdev && !thaw_bdev(sb->s_bdev)) + pr_warn("Emergency Thaw on %pg\n", sb->s_bdev); thaw_super_locked(sb); } else { up_write(&sb->s_umount); From patchwork Tue Aug 1 17:21:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13337069 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 42896C00528 for ; Tue, 1 Aug 2023 17:25:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CE0CB940036; Tue, 1 Aug 2023 13:25:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C9101940010; Tue, 1 Aug 2023 13:25:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B595E940036; Tue, 1 Aug 2023 13:25:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A8C2C940010 for ; Tue, 1 Aug 2023 13:25:32 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 50754A0555 for ; Tue, 1 Aug 2023 17:25:32 +0000 (UTC) X-FDA: 81076212504.18.FCE6B4E Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf05.hostedemail.com (Postfix) with ESMTP id C64E0100A31 for ; Tue, 1 Aug 2023 17:22:18 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=0piq9feo; dmarc=none; spf=none (imf05.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+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=1690910538; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=s138cg7gYjPWGJdqzzBwXH8kpdPjGDZzLq64ogsra4w=; b=E2xQLulLQuh7RKpmgXIddcBb1R/R59asLZ36NMRM2sVLqwJr+AyPNAE3nQ6hvB59kgDt8L fGeqzICphRihiyi037QbwgVIiKSxJfH6fAQqswbZEJl9u6nmn1wWmWVvMizUxCCciyoOzF Mzriin3AjQAugEJOFaeXPqx/J/MOVyg= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=0piq9feo; dmarc=none; spf=none (imf05.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690910538; a=rsa-sha256; cv=none; b=neLSwtAfbN3RB5nqZpMNyzvP3hRdCjNuXlmHACbuuB1f8zOZff/Ql74G8fH6KvRfJvjFex 7fIVmGRk0gfUH0r6/k3oKK4JZueltzZar6NyFBJTTlerXZxG8U3MRJmnLA66NJPrxrWb0a 10XE9M/zksMHPO7GRG+Z0IeNKwMsfAI= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=s138cg7gYjPWGJdqzzBwXH8kpdPjGDZzLq64ogsra4w=; b=0piq9feoqLNPgQeoA16dGfWCHq VGyiLsvr6Dd2d+ZDIoL7ScErDWS99A5ePORvrjrlrJRFbLhJT+uBQYbZGDgR5+qyIhLpAiVM4JuD7 SbLH91cW0K+fZ0mTUb/2Lckb12yrABJ0JVo3WecSTPDF6nBF86jjx4Q6a9XdODOT2/dZxTX0BatLV 3wmdfLaYG7TWRsPZ7tMKF3hjqpbMRAtH3MRYnZdZgG8OYLpvztUUJhgDcE+mzPCN5QQsjm6agLNp0 6vd1sjb3VJ+3cyRupoQDf3bVTmlzAETI0JEBDV1KUEjTSAsm2n7Yxq36huEyafmltv5BMMu2/saPm e+O6IWyQ==; Received: from 2a02-8389-2341-5b80-39d3-4735-9a3c-88d8.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:39d3:4735:9a3c:88d8] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qQt4W-002uUr-2d; Tue, 01 Aug 2023 17:22:13 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Luis Chamberlain , Hannes Reinecke , Johannes Thumshirn Subject: [PATCH 2/6] fs: rename and move block_page_mkwrite_return Date: Tue, 1 Aug 2023 19:21:57 +0200 Message-Id: <20230801172201.1923299-3-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801172201.1923299-1-hch@lst.de> References: <20230801172201.1923299-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: C64E0100A31 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: sohrbc7qu14ig3bkf6k3dpi4a85prdt1 X-HE-Tag: 1690910538-319376 X-HE-Meta: U2FsdGVkX181yyNdmxAIsAbOunCANTi+lTdyvMLpoQwOiGP/gKyx9Q2r4WjpU5kV58Uo/ACCGn7s8V+dCO5BkCgvsPhL0VvW5fiKdwNrAKrX2SB2IoWmjfQ/L/59EZetPWJREiIajVbkUQJoVRpetQe/dZF/5AOjXBHwIZVVGCAJMtuBLVw5pcX13RQPSS++Wf7v1t0CrtC0T9Hi3sn+gnzozPi+Dv69Puoqky/ZikGC4vRU3zq8dHi5asjsCCILebvtO4DqUoANJbOovorlQRulpFCD4WfSgM4rMiUYB6VnRNr63yl14j7Sywv4/+m2ZV/4PlsgPGBP+rTlnkA47fFnd+KbEkTEUP3rmXNMQuSbPurADA4eskaX7+0OyJPQw+NidLZfts0hQhjLRyELYYZ+VWzlhp11+Ox0Zwp+V6v3DvyE/e0OhGzbiyw4hZM+0J238aJqVbngqqhHo/TT/xPjwVIMpEnbKqCc0cTDd5mgt9xh6zI+8JrqWdD44aWQlOWikuUkk0SixC4KNA4QROE26moCm5jeD+h/B954cu7fz6lSWbPPr/WommlamfS9TcODKm3Pv0f1zZHnXIiCl4HGtdIlPQWJ0dTkaalm64c1LKiY1Y1v1gHDiYy0iKGcsPoPgU5LEzbYdsR2Bs5oXdxji4d68ysiLtQVhn6r+9bR7+hB3+8UIgZ0v72tTHMOHxfV1W0557bEA3IRE6RZ4aw9cLIgIaNV7Qm/Ps/m7xnLdI8J6LvkWPA+4IuRfVxaAxNMMTo11i1lZ3mGa6OzDKGNPPJRlSg9VFGpEi9G/JSiuDq8Y9NrQGjLk43EIdA6EL8terN+pBUinAOQ0521qrXGCNz5ar+9P7DrK0BNMtwzuRwDS2qdWt0HFgYlRXDKpljvu4BtY7TKYJihMOEPzzfOkODE7DygpAKyj06lM8i8xvaQK5r0gBxnLolx6T5/fMozeMDbtBdQfIR0jx+ pLzXINxH GO17nuNHxT2Ia0ndkfyrrPRfj6TdYw3iYcxV1MItgexqzabyPmHXCvKLhMk0k1t+36EJoK7/zoEsCMngKp5htd6Huu+/vbk+DzDHCbJ5S8dBK3Qi283d+fzq5VAdhCGfWl+3EaPfpskK4NWHivfwP7SdhtZLZCOlHScAAChvUSzS/s7tsQjw7wedkRfqIHkwBDtnxCa2O9QjWr8hp3/JKI/L7P1uTUxDT81rGxg1osqZOA/KND6/3w1pMCLOOnI9ini3OdxWXDFxg6LY6qbKrjlTJwPMe1N5QSM7vTBDiY1Scx3TxVV/Ny5T3P3PYiTTqNnawLrwq0Ip0mKu4UOgKyywh5MMgwrUXgwMXM2LTB+N3OAJLChv5ePzt6u+9/jID1Wo8cgxbfEs1IQ7/Q3uy06Zno/MPj9H5UXQU7ZRlLfqhYLJ4SIc9aQe4737vfxeKV+ARIhqrgfdw5Uc4P9T105MZuFv4tj+RbhsX39xoAiGWS7FKpFek9zVU/j6BZKnmdWupBRFgszRiLe8vLlMcox1Oi30bhzKjR4zYwjPmkRYkMU5PBosyiXti2CdZMthTXrpGFSH1MKIEn4c= 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: block_page_mkwrite_return is neither block nor mkwrite specific, and should not be under CONFIG_BLOCK. Move it to mm.h and rename it to vmf_fs_error. Signed-off-by: Christoph Hellwig Reviewed-by: Luis Chamberlain Reviewed-by: Hannes Reinecke Reviewed-by: Johannes Thumshirn Reviewed-by: Christian Brauner --- fs/ext4/inode.c | 2 +- fs/f2fs/file.c | 2 +- fs/gfs2/file.c | 16 ++++++++-------- fs/iomap/buffered-io.c | 2 +- fs/nilfs2/file.c | 2 +- fs/udf/file.c | 2 +- include/linux/buffer_head.h | 12 ------------ include/linux/mm.h | 18 ++++++++++++++++++ 8 files changed, 31 insertions(+), 25 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 43775a6ca5054a..6eea0886b88553 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -6140,7 +6140,7 @@ vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf) if (err == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) goto retry_alloc; out_ret: - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); out: filemap_invalidate_unlock_shared(mapping); sb_end_pagefault(inode->i_sb); diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 093039dee99206..9b3871fb9bfc44 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -159,7 +159,7 @@ static vm_fault_t f2fs_vm_page_mkwrite(struct vm_fault *vmf) sb_end_pagefault(inode->i_sb); err: - return block_page_mkwrite_return(err); + return vmf_fs_error(err); } static const struct vm_operations_struct f2fs_file_vm_ops = { diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c index 1bf3c4453516f2..897ef62d6d77a7 100644 --- a/fs/gfs2/file.c +++ b/fs/gfs2/file.c @@ -432,7 +432,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) gfs2_holder_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh); err = gfs2_glock_nq(&gh); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_uninit; } @@ -474,7 +474,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) err = gfs2_rindex_update(sdp); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_unlock; } @@ -482,12 +482,12 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) ap.target = data_blocks + ind_blocks; err = gfs2_quota_lock_check(ip, &ap); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_unlock; } err = gfs2_inplace_reserve(ip, &ap); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_quota_unlock; } @@ -500,7 +500,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) } err = gfs2_trans_begin(sdp, rblocks, 0); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_trans_fail; } @@ -508,7 +508,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) if (gfs2_is_stuffed(ip)) { err = gfs2_unstuff_dinode(ip); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_trans_end; } } @@ -524,7 +524,7 @@ static vm_fault_t gfs2_page_mkwrite(struct vm_fault *vmf) err = gfs2_allocate_page_backing(page, length); if (err) - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); out_page_locked: if (ret != VM_FAULT_LOCKED) @@ -558,7 +558,7 @@ static vm_fault_t gfs2_fault(struct vm_fault *vmf) gfs2_holder_init(ip->i_gl, LM_ST_SHARED, 0, &gh); err = gfs2_glock_nq(&gh); if (err) { - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_uninit; } ret = filemap_fault(vmf); diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c index adb92cdb24b009..0607790827b48a 100644 --- a/fs/iomap/buffered-io.c +++ b/fs/iomap/buffered-io.c @@ -1286,7 +1286,7 @@ vm_fault_t iomap_page_mkwrite(struct vm_fault *vmf, const struct iomap_ops *ops) return VM_FAULT_LOCKED; out_unlock: folio_unlock(folio); - return block_page_mkwrite_return(ret); + return vmf_fs_error(ret); } EXPORT_SYMBOL_GPL(iomap_page_mkwrite); diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c index a9eb3487efb2c2..740ce26d1e7657 100644 --- a/fs/nilfs2/file.c +++ b/fs/nilfs2/file.c @@ -108,7 +108,7 @@ static vm_fault_t nilfs_page_mkwrite(struct vm_fault *vmf) wait_for_stable_page(page); out: sb_end_pagefault(inode->i_sb); - return block_page_mkwrite_return(ret); + return vmf_fs_error(ret); } static const struct vm_operations_struct nilfs_file_vm_ops = { diff --git a/fs/udf/file.c b/fs/udf/file.c index 243840dc83addf..c0e2080e639eec 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c @@ -67,7 +67,7 @@ static vm_fault_t udf_page_mkwrite(struct vm_fault *vmf) err = block_commit_write(page, 0, end); if (err < 0) { unlock_page(page); - ret = block_page_mkwrite_return(err); + ret = vmf_fs_error(err); goto out_unlock; } out_dirty: diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 6cb3e9af78c9ed..7002a9ff63a3da 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -291,18 +291,6 @@ int generic_cont_expand_simple(struct inode *inode, loff_t size); int block_commit_write(struct page *page, unsigned from, unsigned to); int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf, get_block_t get_block); -/* Convert errno to return value from ->page_mkwrite() call */ -static inline vm_fault_t block_page_mkwrite_return(int err) -{ - if (err == 0) - return VM_FAULT_LOCKED; - if (err == -EFAULT || err == -EAGAIN) - return VM_FAULT_NOPAGE; - if (err == -ENOMEM) - return VM_FAULT_OOM; - /* -ENOSPC, -EDQUOT, -EIO ... */ - return VM_FAULT_SIGBUS; -} sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *); int block_truncate_page(struct address_space *, loff_t, get_block_t *); diff --git a/include/linux/mm.h b/include/linux/mm.h index 2dd73e4f3d8e3a..75777eae1c9c26 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -3386,6 +3386,24 @@ static inline vm_fault_t vmf_error(int err) return VM_FAULT_SIGBUS; } +/* + * Convert errno to return value for ->page_mkwrite() calls. + * + * This should eventually be merged with vmf_error() above, but will need a + * careful audit of all vmf_error() callers. + */ +static inline vm_fault_t vmf_fs_error(int err) +{ + if (err == 0) + return VM_FAULT_LOCKED; + if (err == -EFAULT || err == -EAGAIN) + return VM_FAULT_NOPAGE; + if (err == -ENOMEM) + return VM_FAULT_OOM; + /* -ENOSPC, -EDQUOT, -EIO ... */ + return VM_FAULT_SIGBUS; +} + struct page *follow_page(struct vm_area_struct *vma, unsigned long address, unsigned int foll_flags); From patchwork Tue Aug 1 17:21:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13337086 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 94FF0C001DF for ; Tue, 1 Aug 2023 17:32:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D8CC94003B; Tue, 1 Aug 2023 13:32:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 08A1A940010; Tue, 1 Aug 2023 13:32:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E92FD94003B; Tue, 1 Aug 2023 13:32:48 -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 D5578940010 for ; Tue, 1 Aug 2023 13:32:48 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 8F90480987 for ; Tue, 1 Aug 2023 17:32:48 +0000 (UTC) X-FDA: 81076230816.14.8CADB70 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf17.hostedemail.com (Postfix) with ESMTP id 345C940A23 for ; Tue, 1 Aug 2023 17:22:19 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=n6MaSNhs; dmarc=none; spf=none (imf17.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+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=1690910540; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LPZ36zC6GvqbTCnZCGcWZ7da5/qiX/GMMmjuuQZZ1fs=; b=h6dQIYp5uKXwTHvfPZTE/9u1h2n1DbiM2I6ZIp3gjDq4a5LC7HSJAuDy5epKl35ZXh1hXX 6j6seijDfr4rNBYA95dr34yOF0TbldRcWDwmQmc8tFeHEC/LP7D2PsFa1DIH1ZpJgxbr9Z C+Z9hlBAc4E0nkIGFK/IUr9/AYn7Ghg= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=n6MaSNhs; dmarc=none; spf=none (imf17.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690910540; a=rsa-sha256; cv=none; b=qogn8BAe8PQZcMe98qWWV/aNz1UsGEVbefaUqVHPKB9Wyq/EDJRzQNJOnPI3KdQb9TlrbK QDXirLz0T8+8TEbCJC+AOMfL0HLk9ldot8qvqU5+BEco/be7TDarcRi24b6B9N5qlW0DYc 1NglOuaEebAE0tfsGKLAX/JGzGs6Pto= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=LPZ36zC6GvqbTCnZCGcWZ7da5/qiX/GMMmjuuQZZ1fs=; b=n6MaSNhs8uVYotBzA6i/yJX+px g9LfPU499il++YjZ9AbVXnSkDQBxSIWomOOY+Mjq6Yq+hJ5WAN4tk2csRUjw/a8Cw63RlENt4IQav 79sSAP3IucnjQVn7QhONiH8ez4qiM2AYluorFx0XkLElRk42SZOWWmcQdWxJdyOR0B2Y5VeXmXIur feZmMcWLKjFyUk0VomkUVYmdacIukiXVZICpUbQ4ZpTWCgBR2kGzhCWZmTcN4jpM4ZP4RijkGtGQH n/jzw2gt8+tptTOTyEPEiOC0p2XHnxMotMu51AsgooTfgEEYVuGmVDFkODUKQBf9QUr0xriWRFrhZ tEjlhmQw==; Received: from 2a02-8389-2341-5b80-39d3-4735-9a3c-88d8.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:39d3:4735:9a3c:88d8] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qQt4a-002uVb-0I; Tue, 01 Aug 2023 17:22:16 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/6] block: open code __generic_file_write_iter for blkdev writes Date: Tue, 1 Aug 2023 19:21:58 +0200 Message-Id: <20230801172201.1923299-4-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801172201.1923299-1-hch@lst.de> References: <20230801172201.1923299-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: 345C940A23 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: 6xkgmt61nc588qn7j8p9ki1szezs9bps X-HE-Tag: 1690910539-782746 X-HE-Meta: U2FsdGVkX1/y642gkYvctupdZOv9aggrWuJTSa83tL3eP5/tWhYpzlW10vwgGxdTrQxx8CSV2mAW3sodKzwJOSDZdhxN2cZFFtUm+jtHPl6SHQePKSMa+B+qGsE6v5EZRDvEldbn7wTmHycXgwbKcrTK61cg/ImVehlkbNU0kIWX8VQhJf56VW6/EIhlE8BxRyh6W1cSvx8xwO4RQLJyJk2M4tBk1uVu2psGOLR9kSb3oLzJ1t+RlcqBJ784DwPpCzJQmjJwl/7CWE5bvMjn96H6To5KdIk2UH5Rfy/34JG7h9DjpQglBbiRX7V9TOTzqDxZTbCGHOQ9g571CYnZmFnBM41Qku+jT5UbTZwExZNgbfM6j6RXXiP93xS961TiQOgE/QntFRTXhSkwoMtNTt1lJl9kybZHymA2AtDtX7E85hXlGNcAn/G5sCiL1pzAkgrO9mUqJwUETaUuY949K9fGviIZgboo8KSTcrCTgRX5baVSYji4hY3Z7rx8wn3iONqHfOvY3AnxOR7YKWYTkjZjx0/Ktmlb0/eEIl2L2jmKi8Ld+UeopiRGREqYz/tiRFa3PqFh+uv9wGyUsSbdYELq0h2T6JV9d8CqW3Af2u24suHYm5dzfuG9lfjjyYnoThjoCG1SNlAZGEy9T7SeBvNDaaWu605sSgV2CPQkCg7R/nKPFzYD8DIvIFJXZQ/b2FlRDB9d2Zbnj0K9tIpovd7n+DbIBkgBSzzmg9xe2oGsOyWK52SR1ahlqwnxW24mWuL6FuJ3K3Re2DBUc0it26PdDW4qC0P2wSjW4m2xyXv9oOxE32QkPd/ehef2fx7tXkx/bUIdHphUNk5jvOCXqvn4bvAbk9DYQ5yZu4+EcVWJZ2Qx7Aqi+QEg80fin48VLhkcbEvM58/i1y1F+35Ujph3XCubcH4EQUIpeWvx359kSnT7suSAKnpcRQl3+m/6wxmiVakH6/3BEOlz+p7 Kuippu1C nOHXazMploHVXQgcO3/ygCOaVgTINwlqy2go9QapH3QpqnOk06KWvoefbxcItbvm0Y+6iO0R3+SQdjm2sFQC1Lg8q/VPhhtSjcib5AeYWrdOfShoPrbqLHri1N/agONYYssYsjRQKq8gxyXUxbwCYFIBlqfy8+9T/Um2mQpz8yIzohhVQJYs3q1NFcJqHOkbyJZlzMbgJTAH6TAq7b8DlzEODtFNmZq4cgzIAMewP5TUonrvNi1zCiAn8Fd3xfwuyiOwUkeBJWur0FCYQgCW5y2D9lOkYW+G4zYhQcPbwW5XZl/nRoKFFXLJF+sqkxSWC0eOCd4WGxjAzLppBp9ylW8wiwAZFyLjy8U16yfo1CKOLLJiN27Bo+5KFSkLWHlsiMhbAfmF3SwR4s71tciAMwelLVDaDFFqByUGT8l/5qPL4NbJaNm2F1xiM7swOO96QWEvH+tU/j6sTa6rGVC3dVYVbKXEh7DSboc/wobl4lh2PClA= 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: Open code __generic_file_write_iter to remove the indirect call into ->direct_IO and to prepare using the iomap based write code. Signed-off-by: Christoph Hellwig Reviewed-by: Hannes Reinecke Reviewed-by: Luis Chamberlain Reviewed-by: Christian Brauner Reviewed-by: Johannes Thumshirn --- block/fops.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/block/fops.c b/block/fops.c index a286bf3325c5d8..8a05d99166e3bd 100644 --- a/block/fops.c +++ b/block/fops.c @@ -533,6 +533,30 @@ static int blkdev_release(struct inode *inode, struct file *filp) return 0; } +static ssize_t +blkdev_direct_write(struct kiocb *iocb, struct iov_iter *from) +{ + size_t count = iov_iter_count(from); + ssize_t written; + + written = kiocb_invalidate_pages(iocb, count); + if (written) { + if (written == -EBUSY) + return 0; + return written; + } + + written = blkdev_direct_IO(iocb, from); + if (written > 0) { + kiocb_invalidate_post_direct_write(iocb, count); + iocb->ki_pos += written; + count -= written; + } + if (written != -EIOCBQUEUED) + iov_iter_revert(from, count - iov_iter_count(from)); + return written; +} + /* * Write data to the block device. Only intended for the block device itself * and the raw driver which basically is a fake block device. @@ -542,7 +566,8 @@ static int blkdev_release(struct inode *inode, struct file *filp) */ static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) { - struct block_device *bdev = I_BDEV(iocb->ki_filp->f_mapping->host); + struct file *file = iocb->ki_filp; + struct block_device *bdev = I_BDEV(file->f_mapping->host); struct inode *bd_inode = bdev->bd_inode; loff_t size = bdev_nr_bytes(bdev); size_t shorted = 0; @@ -569,7 +594,23 @@ static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) iov_iter_truncate(from, size); } - ret = __generic_file_write_iter(iocb, from); + ret = file_remove_privs(file); + if (ret) + return ret; + + ret = file_update_time(file); + if (ret) + return ret; + + if (iocb->ki_flags & IOCB_DIRECT) { + ret = blkdev_direct_write(iocb, from); + if (ret >= 0 && iov_iter_count(from)) + ret = direct_write_fallback(iocb, from, ret, + generic_perform_write(iocb, from)); + } else { + ret = generic_perform_write(iocb, from); + } + if (ret > 0) ret = generic_write_sync(iocb, ret); iov_iter_reexpand(from, iov_iter_count(from) + shorted); From patchwork Tue Aug 1 17:21:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13337083 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 A8F0AC001DF for ; Tue, 1 Aug 2023 17:27:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 47E2C940038; Tue, 1 Aug 2023 13:27:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 42E18940010; Tue, 1 Aug 2023 13:27:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 34444940038; Tue, 1 Aug 2023 13:27:19 -0400 (EDT) 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 1E061940010 for ; Tue, 1 Aug 2023 13:27:19 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id DCAAC1C8EC4 for ; Tue, 1 Aug 2023 17:27:18 +0000 (UTC) X-FDA: 81076216956.28.5DC6C37 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf22.hostedemail.com (Postfix) with ESMTP id 78B8EC1741 for ; Tue, 1 Aug 2023 17:22:23 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="YOi/w0no"; spf=none (imf22.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690910543; a=rsa-sha256; cv=none; b=pn8yFqgeac8wYn1nhKDFKSelQL3rk5qmDvvVMtLKBSa7DG0HRcigItr/rtvwkAdDligODT PBvRbRl6M4I7ycZJ5v7Si/QKkFrg/NQdZp5Hi2ebja15sRml4EER2dWKHKDjUX4eWqDP+U gaDJNwZG/luWy4E+EnouI3ErHD1HGtA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b="YOi/w0no"; spf=none (imf22.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+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=1690910543; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=fw7dM1JsVnVndL2bSWsxPXEp2IvCudbljLOvAhT8Np8=; b=v0WUS853b9Sk/RT7PT0t3UggsCrL3jdXRGhZsjksl8vuWqaZsZhWLobJgVwR5ZaXVZHkT0 rTYlD82HLfiRJX+LHNKy94gWQeAsvXQ9M9Onzp9Kc0Y6ORYdqYkaci877w8FZz92kwBjsb +PsVL6X7Z2J971RsftAgOV+Yh8uS0a8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=fw7dM1JsVnVndL2bSWsxPXEp2IvCudbljLOvAhT8Np8=; b=YOi/w0nofenlN5gIdk42JnisZa 6ySpZds34NUDRPdlbIJ9XMyFrBlwfvzJy4WTmeaPF7dJNEpoAm+2rI+hJxzWeiDnoH8VwNoJF0oJp H0ZXDuTHKY1yXEEg+9PA7rmiagtQSg+ALFlFLqmI10cmaNf7RF5J1+cmaEwg3ZTR1EoyZktOTmBsI lF8+53ZcFqDEgOXOrTX82JdWh/A8hgepiQGppexMN/PX4XH5OMI5uEOgrwTnBFot9A1R77EClVW3Z KjiuFDUbdVaudO5eYyVmB/VG1UqIuYWvOBWR8cr1rhI/qtW4TTN0XUjz3FjwFpOOm3qqLrkdjtzGN xRv3/F3w==; Received: from 2a02-8389-2341-5b80-39d3-4735-9a3c-88d8.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:39d3:4735:9a3c:88d8] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qQt4d-002uXB-1q; Tue, 01 Aug 2023 17:22:20 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Luis Chamberlain , Hannes Reinecke , Johannes Thumshirn Subject: [PATCH 4/6] block: stop setting ->direct_IO Date: Tue, 1 Aug 2023 19:21:59 +0200 Message-Id: <20230801172201.1923299-5-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801172201.1923299-1-hch@lst.de> References: <20230801172201.1923299-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 78B8EC1741 X-Stat-Signature: 394neuujjh613518jkacqoptmhjbmkux X-Rspam-User: X-HE-Tag: 1690910543-720621 X-HE-Meta: U2FsdGVkX19vvh24im9BvAeGv9wB5o04cNDMo/uMOUBmTnKbQ5UcCWCASgq1QfsTTQZ+S27Ra58FIxD9Cf0EU2xLPyND7S8cHQQ9kX/vIOVwWjMphjYbjNGezmW7Itwbl5Bd9ITtFv2sQbmN4d6AC1UBxh3xGmeZEuiXV3V6KghPwUK5YL401h2NvbUsgkrl05AI5lpzr6/ckaclminTe48rnnHa62EKnuzgWk5MPo9OwBfumAC1eFLxCkqt79gKrEQ+gHWYkeC3DEjSpa/e29aHy/Y2NQbjINsTAXcIzw1PHCWl4OAeDhvhj/zMwsgjXETsKnrEPkmGplkQP6i3r1FTBfQRQzaHTignVXswJAk7M0L+p8PJ2LLcJAu/riNr+25N27+g8V9gjTORuKtKzxXWGsXummEtqI8z2PCP76YaJp0/99Y2smXcVm+ZnjJn47c7wpAclQCJOIeqForoCdIQJ1dUz7wOXwV/1Si4Y0Jk6o+DByklpDU3Dj9YQpxQRWTofxfinFUMlbIciHXTzqiWI1KXKEDcHX9Td9Ud0424kNQFYTc4rtm4iXxUUgTWYd8g8BSgq3bZZoxXTbfB7H0P3x3WZE2knFgvdaI1ghXlYMKnk7QUn93fwmxcEN4RKRJWhFkQv7VaGNLw78iJqZe/16tMj9E8vBiyZYfgzD9sDmC+aFToMjKOHMrKECVFppO/4rxnMmolAGWLquU6ZXqhLXYPhdC+M9WrHoYeu2h8cS59iehY2oqENoLt6iYV921eS/FeFy65tHDb7Shz6XvbCm2LcPmvQT490a2mTo11wwfEbxwFu0i50zEv6Pfup2kB6i3e8dqamCJOEiDOFoCPnzKZXFLJnRcLw1Tqs8E5djW8k1khoUYYwYdEGtBhQC/8IEWStu43t4FWlOgIzob+xUqGVqx+Qsudw3KrQCvl9oEmksBYMzTpwUfqIpl5QtcbU5RfeL0UWoD55KM FL43Yi7j WMNjah1f8xxFtm2wboPocA33oTRKXT1adJBw49Dqax61D/tWECFUxLMh566shDWHQTEA5d/HMufSMRFRSd6GlaMwyJnWhwfFMqt4QdnZzZTLkFU3yxoVJvxK5faoMYaPgiOpbgPsDo6X4vE5OK03WZlZGg8KC7HOgKIe27b3Wf56wZmoSBkrS4ciNQ9owY+qhMNiB383vU159imUiSXJDNjIZmLj9MkYyBZmie+dfSu8nqjlrvhU09r9l8KVXmVN11miaeQWsRbi+rNpqL8z+DM6qvX8xhYYvsHxP1+UtGeuMGj0m/saVYnd4ddSfVtz9x7kIDpiCufP1H4XoOkMotZ/y5AGtOBYcqDHRVpA+u7Cj+PvqQd9zqdFsU/k+JfYlhZFwOY/MTRS+OlfA04lZNUD23FF9QAmro5i/4sBRa712Dt0b/cjtSmHQKFS2/VLCrv8jMSVuIzUtOYoaaApQWeZ5tWjpaq4Vx0EzlApxNC1uTbsbhn58JmmMV/FN+m2zNqiuFF+NM3uAkRm+pXdGwofSiFCefaP76T1ktdBiky0LeSp9C6yUS/22eHiQIU6ofl3TOv10vtrnODY= 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: Direct I/O on block devices now nevers goes through aops->direct_IO. Stop setting it and set the FMODE_CAN_ODIRECT in ->open instead. Signed-off-by: Christoph Hellwig Reviewed-by: Luis Chamberlain Reviewed-by: Hannes Reinecke Reviewed-by: Johannes Thumshirn --- block/fops.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/block/fops.c b/block/fops.c index 8a05d99166e3bd..f0b822c28ddfe2 100644 --- a/block/fops.c +++ b/block/fops.c @@ -428,7 +428,6 @@ const struct address_space_operations def_blk_aops = { .writepage = blkdev_writepage, .write_begin = blkdev_write_begin, .write_end = blkdev_write_end, - .direct_IO = blkdev_direct_IO, .migrate_folio = buffer_migrate_folio_norefs, .is_dirty_writeback = buffer_check_dirty_writeback, }; @@ -505,7 +504,7 @@ static int blkdev_open(struct inode *inode, struct file *filp) * during an unstable branch. */ filp->f_flags |= O_LARGEFILE; - filp->f_mode |= FMODE_BUF_RASYNC; + filp->f_mode |= FMODE_BUF_RASYNC | FMODE_CAN_ODIRECT; /* * Use the file private data to store the holder for exclusive openes. From patchwork Tue Aug 1 17:22:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13337068 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 2C74CC00528 for ; Tue, 1 Aug 2023 17:23:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 90EB7940034; Tue, 1 Aug 2023 13:23:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8BE70940010; Tue, 1 Aug 2023 13:23:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 786A4940034; Tue, 1 Aug 2023 13:23:17 -0400 (EDT) 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 66A8D940010 for ; Tue, 1 Aug 2023 13:23:17 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2F03D160626 for ; Tue, 1 Aug 2023 17:23:17 +0000 (UTC) X-FDA: 81076206834.10.F7DFDE9 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf16.hostedemail.com (Postfix) with ESMTP id 26ECA180076 for ; Tue, 1 Aug 2023 17:22:27 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=nRUkF8mf; spf=none (imf16.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690910548; a=rsa-sha256; cv=none; b=cNF7K7Yfs65RaU0lKIQyo2flfV5zzl8fsePhomQBUAQQPZseIl4C9aK+skgJ1YKdFnpZ2U HYaYlpNuDds79zcLRzoR4oax7t5oeXf2c+3bMd5ew+TWcEOubeIaYkD4dKAoIhL9bMN0K/ fIkSDfOO9VcSGejjbllA7FvjG5mMnV8= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=nRUkF8mf; spf=none (imf16.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+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=1690910548; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=JTr82y7UepXdHwELYFWesdOCibavx/BJhsA/0AIsVvc=; b=Vh+gPSw9/0kdYgPUODqEcJQi8XpqTM2vKFjlTxkGMr3vMsaXoYd7XS4KTcTA8yHpkTSM9n TCMeXakZHO84Waaea8LjzFGyLV6Ov3zK8sGJ61cWQZNqUJQiqhJMkfz2wre6oZEdSP8g1k 7aNXdOB9eX+LogPxolywvmYHAwBP1kk= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=JTr82y7UepXdHwELYFWesdOCibavx/BJhsA/0AIsVvc=; b=nRUkF8mfVPyzwn/m0kchVzdKLm 5v0iKM5U7Yxj1ykRYnyMTzxlNAyhVEMt5WKJyKGDO1xPVHDPVm0cN6UL9wSrv+Nq6nS9baElkX9Og PkWAGXgjXgMe9lsPDINkwlLDwpbQ+zrLfZ/cYC8RARePfqE5vFG2AEdi6ssi8M/scyuey/S7j5IG6 Sqcd5IhmhBMS6LcLKhiDoEjlx9V0MJtU020zEAQxnJN/uwL44fU2n+BXqdzLPLHOdx2BU2nKgfEsd O/COL+ltBjb+S4DHd4cTMhmEesg1Iy80MbD8S5E26vTY8nvboIZiZk1RZNb7QCFgx/BCVWlriJflY ggon/cpw==; Received: from 2a02-8389-2341-5b80-39d3-4735-9a3c-88d8.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:39d3:4735:9a3c:88d8] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qQt4h-002uYq-0B; Tue, 01 Aug 2023 17:22:23 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Luis Chamberlain , Pankaj Raghav , Hannes Reinecke Subject: [PATCH 5/6] block: use iomap for writes to block devices Date: Tue, 1 Aug 2023 19:22:00 +0200 Message-Id: <20230801172201.1923299-6-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801172201.1923299-1-hch@lst.de> References: <20230801172201.1923299-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 26ECA180076 X-Stat-Signature: njmc3uaim45iffioon3h6hmaqyug93ny X-Rspam-User: X-HE-Tag: 1690910547-950268 X-HE-Meta: U2FsdGVkX18aDj31qifQ7+0DqTbtWSloafXeHm86exO6Kcn9UBxwdPdGsUiEaNHJWtC7/+p5cRygRCBZlb1HdEHryAb6tFnXOK54AA1YshpG2h5bZkTOt+Y8dkqQYk/Y9f4hZzoN/xMpK4RlLxH/VPoKU/nTq7OcZazgsty++yXb8fZRbDmBwjOOEFi3QrDVTyQHMZNpVsNKHmG/1fKQ21xsdghTvlz6TKglPwt+MQuGdS/sTENi+FKFLM/97AieaJ5UVYIcEVYqfYihKv15avCfW1sp8V0mT+DcvHsEM03kAlJeRGlNhQbnovU5JO7UyXrRvYs7yfGTQ2IxqqQ/8EF7oRD90GsK5C54oCDRxYkFZkjNHoTwNxKwm/j1SfMJotQc5ffgJkkcUa+QBKeagHwsLA2MJ3suU7vpJDSrvPwgzaNMi1CG1DfJSmkbzcMuobZXL6ALoSWCf86go8tdy6uGWy0JDiYwV2OUYGvbMDtk4wxxx7gZazf8pUlc13qE4yOIdOEizsPTxUvHcYWYdn3f+5JBa2XQYV4kVNcptByITceMFxsCugoLonbUao0e/GgcEMntj1+b4UJlT71OparWVuaVBKvUFT20vSNtsGxojn9or4yIhHy4O4zA+EChvTacAbFlkKANS+hQi/N7Vt+aAIbLp4kkfQ2P2cUn7HaTxw27tFIuFSto2satFhaW1QHDVZtNYaZWpuRBZ6Q+Cfa8IrZ2mEGFN4qVhqy60vZ4vteAm2wLQFup5En132H2SXdo9ULX/lpIvOwjRQuYbD070Obeu4xoW6a3kDrSrzgXdkd4rqJKmDY75U7e4Cpj3OfZsTAwyLoh2VAqVrzR1CIJr+sTyPohvZ193F084pAa/jYpRjDLfQ1/PLbK0M0yidLNFUCNFchjG+HtiF16U+udic9mvo7ul0+dA5HebsbbPcCqT8nM3n+L3sGvT3q8mjxNHkquXdraFps8Tjl qWAmKMuj GHkswlm6YTsQdXfBY6QFJObShm5MyX8AWGfn1jBsqhfVK16u04hf8xHrZtIaV0TH/biYpPeFfcTCJGAUTaEaHtr5rmAD1cGlg0M/coFmUvVPGCM3ZJgvolf7iRg/NGenlTAMtTvUqDjSMBaXgp9mZMdf6q3/19Qq6mrUEs0/26fc9cLV5w6k79JPYowC37bn0kP6e/MuOJjNlSeFc4TT5igrUJOrckzwY7Cb3QPssTOgcvEgVzTpe2v5Bq49r/bBSpZga2XoKMx22iIq06mRfLxmYP0gscUfK88vXL0SmfUIDGJXy4Y6WuPaux7XKB6GHFLPPM0x1EaFExNFhHFh2xntuQf8gUbt/oUsQVmF9s/LoMfOTQT/q/1s4dtmFUBYMxJV9UnIdhymK+vONgHe6Pk+8xu2+Gu3qyMt6DBKv1zmUFkmXlGnkZpEQqHfnYAS+twbIhC0LZKaDbinXHuhgA9NxBCltImrbtMxJ8TVqE1IskOKfNhFzCmmA7w== 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: Use iomap in buffer_head compat mode to write to block devices. Signed-off-by: Christoph Hellwig Reviewed-by: Luis Chamberlain Reviewed-by: Pankaj Raghav Reviewed-by: Hannes Reinecke Reviewed-by: Christian Brauner Reviewed-by: Johannes Thumshirn --- block/Kconfig | 1 + block/fops.c | 31 +++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/block/Kconfig b/block/Kconfig index 86122e459fe046..1a13ef0b1ca10c 100644 --- a/block/Kconfig +++ b/block/Kconfig @@ -5,6 +5,7 @@ menuconfig BLOCK bool "Enable the block layer" if EXPERT default y + select FS_IOMAP select SBITMAP help Provide block layer support for the kernel. diff --git a/block/fops.c b/block/fops.c index f0b822c28ddfe2..063ece37d44e44 100644 --- a/block/fops.c +++ b/block/fops.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include "blk.h" @@ -386,6 +387,27 @@ static ssize_t blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter) return __blkdev_direct_IO(iocb, iter, bio_max_segs(nr_pages)); } +static int blkdev_iomap_begin(struct inode *inode, loff_t offset, loff_t length, + unsigned int flags, struct iomap *iomap, struct iomap *srcmap) +{ + struct block_device *bdev = I_BDEV(inode); + loff_t isize = i_size_read(inode); + + iomap->bdev = bdev; + iomap->offset = ALIGN_DOWN(offset, bdev_logical_block_size(bdev)); + if (iomap->offset >= isize) + return -EIO; + iomap->type = IOMAP_MAPPED; + iomap->addr = iomap->offset; + iomap->length = isize - iomap->offset; + iomap->flags |= IOMAP_F_BUFFER_HEAD; + return 0; +} + +static const struct iomap_ops blkdev_iomap_ops = { + .iomap_begin = blkdev_iomap_begin, +}; + static int blkdev_writepage(struct page *page, struct writeback_control *wbc) { return block_write_full_page(page, blkdev_get_block, wbc); @@ -556,6 +578,11 @@ blkdev_direct_write(struct kiocb *iocb, struct iov_iter *from) return written; } +static ssize_t blkdev_buffered_write(struct kiocb *iocb, struct iov_iter *from) +{ + return iomap_file_buffered_write(iocb, from, &blkdev_iomap_ops); +} + /* * Write data to the block device. Only intended for the block device itself * and the raw driver which basically is a fake block device. @@ -605,9 +632,9 @@ static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) ret = blkdev_direct_write(iocb, from); if (ret >= 0 && iov_iter_count(from)) ret = direct_write_fallback(iocb, from, ret, - generic_perform_write(iocb, from)); + blkdev_buffered_write(iocb, from)); } else { - ret = generic_perform_write(iocb, from); + ret = blkdev_buffered_write(iocb, from); } if (ret > 0) From patchwork Tue Aug 1 17:22:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13337087 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 AA42DC001DF for ; Tue, 1 Aug 2023 17:36:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 34CA594003F; Tue, 1 Aug 2023 13:36:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2FD07940010; Tue, 1 Aug 2023 13:36:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 176E994003F; Tue, 1 Aug 2023 13:36: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 05D73940010 for ; Tue, 1 Aug 2023 13:36:24 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 88C09404C2 for ; Tue, 1 Aug 2023 17:36:23 +0000 (UTC) X-FDA: 81076239846.07.DF8EDDC Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf08.hostedemail.com (Postfix) with ESMTP id 1F75016031B for ; Tue, 1 Aug 2023 17:22:30 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=St88yfD0; dmarc=none; spf=none (imf08.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+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=1690910551; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RVck6qCQYZJFvfbDxhURfMxlRTpWL9DSWv+8pYGJghA=; b=N06fLBVKjbqUVhFphLGKYEzW2lw3/vBkySg9Ui4Y4eGSvz+6RC00BFvGVE66yvCXPrYcdP FKpGi3TLR40vYXw+vbJpOobaHWIbtn5jZFbp0F7VSeUc4q16vvC6toMrb2ewsEmxjRbZBm W1KAIY4wYN79nDRJNh4GLawQmFGGgcE= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=St88yfD0; dmarc=none; spf=none (imf08.hostedemail.com: domain of BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+44153ebb3f5e3de177ba+7282+infradead.org+hch@bombadil.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690910551; a=rsa-sha256; cv=none; b=5O1UNbBmZKusgkkvTvteOxZW37CegNZAuY8fbIB8cT0YHMbbLbfeh2j/aDFnXRzVSVIJWp qv+Yf9YHZV9sLxa8idHmymns2pHO2FW89GSvTAqo4RxefWMhgCCPqOIFLsNzvcwc3Usl2C 9gKwEnsTWKC2s4g5zUfSj5QyzmbZex8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=RVck6qCQYZJFvfbDxhURfMxlRTpWL9DSWv+8pYGJghA=; b=St88yfD0BiY/mwCLZiQtcLnaj6 gp+l+AMiJCQl7c77Efk7yNLnGHadC8kCMpI0mv+TG1YiwVwapJn8Nwi8NDrhcmdHRuJ2V92HuT82S dxAlv3hWz0pOIN6Z9vmGZSNEGWMCWSvoJzER1sCOWu7mgqW5JYXtzLiukg1G8YAXQ77MfjMmQCUsI HaxU9T92MFhgDesn49Qokozcrw1ji87n4PQuYmaC4Z9b6zU/Kkc9SHdjbsE6zcKzfJIizQez5zENb fASbg+K3pJqgJe0jnk7Ec9JSqH18BSpjqAvMOfJGcIAozkkhfTqB31CK9FH0gNyGuRmNmyHR9tTyu 7Bg7Z8jw==; Received: from 2a02-8389-2341-5b80-39d3-4735-9a3c-88d8.cable.dynamic.v6.surfer.at ([2a02:8389:2341:5b80:39d3:4735:9a3c:88d8] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux)) id 1qQt4k-002uaV-1s; Tue, 01 Aug 2023 17:22:27 +0000 From: Christoph Hellwig To: Jens Axboe Cc: "Darrick J. Wong" , Andrew Morton , Matthew Wilcox , Christian Brauner , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Luis Chamberlain Subject: [PATCH 6/6] fs: add CONFIG_BUFFER_HEAD Date: Tue, 1 Aug 2023 19:22:01 +0200 Message-Id: <20230801172201.1923299-7-hch@lst.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230801172201.1923299-1-hch@lst.de> References: <20230801172201.1923299-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 1F75016031B X-Stat-Signature: qi8ddre3ctdgx3o1exoa5tjojieggxys X-Rspam-User: X-HE-Tag: 1690910550-677447 X-HE-Meta: U2FsdGVkX1/afn6mYcCIPoclqBbsqx+/naWWTrb1ysoixgMf8+dS1fqXfX7iiilS+N1+MrngXd8CkspzfgL4QGnclG4+P5yEX95AW0hwZfUAWa7QCRSzVtfg9Pnz1oB9MLukdvRLN7tajSA0t3Qel66DaovZdOQZNttzA3jJA7W9DMUmLo7FVESA+IEBgEATk9krnCu8lZrXNT0LZVlNuyccZ2IUstStBGUxLqAyvVldJGPhGjr0mH42A5z5ifSc1RmP9nhjPc+rYWbaeKn2e2FLzBMHWOAWUmqBf9VuBKRMdm0xIIOzQjPJxcUc1WEG6dp8BWCuZkf++lmw4EedlOk3UOztz8thMfQ7/tzmasj0K7jqkocyaqWBEwt7/qRkLDSN4xZcb6Z2ulsq1bXMbpyKPPeCNPxkcfYXoLhOCVOeihENnMitPa7g3oO30/MNPMLBG5yu4h02ReIBKHVoTotsfkU9P7bb8qR1r8IUzgssi4/8lhLpB3T6zeQiWU6KvxlL++jQ6vYFyDHt3XQ8ZJnha2LLMjUqAklRFxvraJ2H74SDX0/K4KhOyiSY/g7L7sf4SOIevQYQDipmkYjda9Wjn1OLklDehn23r+hvlyB6HlZQ7vi7II1P1Bov3xeAwlN322cE4eHAQQWgoRPFWt++aW1vn/3iaG6Dx6UmrE6x0vUdZV20q9xoMrBmD5/Jf/iHRkFZDGX8WUppbSfA9nI+QsLwsv4teLmNMlgKtBV48jM68qsRXTBcQ2GUnpLEyjOWHeFoyJaVN8eRBuJDIrdHsn3zLBPJlawLTZ5umpAp6HuywVqQsapGbNeVpWYdVDbIjtNXB+C61XT59kaiA9mllJQonID/6Ab0Uw5+6J1LRFqLKXBMmkOfwTggnR/siR2AD5pLYSrd177LGErsb5ywOZMWxeamMPA1mDoKyfdnozThPXxgCjN5lzDY6+XZXZd9zIFVVcdFBwNyoG2 ZG9VBk+o mfMeC1gHqZrFuQBcl7r0Mj5LvRBFYraB9m/AfqnIuy2qwaHcOc+78jg/0dy/6gWBXolxLwld9v27zmq9v1eGKg6eq3oHouXrbzHkG5qpyHw8gwj5y68eV+YMMj04sUkDdnjfRP/ncX7ban/zvY3E94IPrkC0Prwm9m8whftxAmf6zXyvwHyuor/8JgfVfRVYvI3gtKCbI/lVcO8lLX9j8SPWKqxV9pnl5lHFfXAic1kXDDi0kzlumvx1rpdLXc2bn3avR1ZAxl4P86yQc8laGzCaZaNIeLHHaB86XvrDHOXWt5R3jpFB3rCxu7O2+21HyINXGhzFBE0K5Jv/ZeeptbMomyQAC2s9uQ47igLXLvXs/ZxTxsZUArpnxkR9hPvzX5Vdt5nm3DUMXDUzd9SqetkRs5eXmZ4E5QRKJy/rZ4R6m7/OddDhGYagNrlKVTW88Z/V23eIGA+wdzqsjszj6eBjDLk+plZTk40qyBZxpfSh3luOiGuH5sUuNCDkP3AY3hI8B4aIzL2Fzb+noLBdg+oFhxIRaJZYBdN/RY7C3i9pQa4E= 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: Add a new config option that controls building the buffer_head code, and select it from all file systems and stacking drivers that need it. For the block device nodes and alternative iomap based buffered I/O path is provided when buffer_head support is not enabled, and iomap needs a a small tweak to define the IOMAP_F_BUFFER_HEAD flag to 0 to not call into the buffer_head code when it doesn't exist. Otherwise this is just Kconfig and ifdef changes. Signed-off-by: Christoph Hellwig Reviewed-by: Luis Chamberlain Reviewed-by: Johannes Thumshirn --- block/fops.c | 70 ++++++++++++++++++++++++++++++------ drivers/md/Kconfig | 1 + fs/Kconfig | 4 +++ fs/Makefile | 2 +- fs/adfs/Kconfig | 1 + fs/affs/Kconfig | 1 + fs/befs/Kconfig | 1 + fs/bfs/Kconfig | 1 + fs/efs/Kconfig | 1 + fs/exfat/Kconfig | 1 + fs/ext2/Kconfig | 1 + fs/ext4/Kconfig | 1 + fs/f2fs/Kconfig | 1 + fs/fat/Kconfig | 1 + fs/freevxfs/Kconfig | 1 + fs/gfs2/Kconfig | 1 + fs/hfs/Kconfig | 1 + fs/hfsplus/Kconfig | 1 + fs/hpfs/Kconfig | 1 + fs/isofs/Kconfig | 1 + fs/jfs/Kconfig | 1 + fs/minix/Kconfig | 1 + fs/nilfs2/Kconfig | 1 + fs/ntfs/Kconfig | 1 + fs/ntfs3/Kconfig | 1 + fs/ocfs2/Kconfig | 1 + fs/omfs/Kconfig | 1 + fs/qnx4/Kconfig | 1 + fs/qnx6/Kconfig | 1 + fs/reiserfs/Kconfig | 1 + fs/sysv/Kconfig | 1 + fs/udf/Kconfig | 1 + fs/ufs/Kconfig | 1 + include/linux/buffer_head.h | 32 ++++++++--------- include/linux/iomap.h | 4 +++ include/trace/events/block.h | 2 ++ mm/migrate.c | 4 +-- 37 files changed, 119 insertions(+), 29 deletions(-) diff --git a/block/fops.c b/block/fops.c index 063ece37d44e44..eaa98a987213d2 100644 --- a/block/fops.c +++ b/block/fops.c @@ -24,15 +24,6 @@ static inline struct inode *bdev_file_inode(struct file *file) return file->f_mapping->host; } -static int blkdev_get_block(struct inode *inode, sector_t iblock, - struct buffer_head *bh, int create) -{ - bh->b_bdev = I_BDEV(inode); - bh->b_blocknr = iblock; - set_buffer_mapped(bh); - return 0; -} - static blk_opf_t dio_bio_write_op(struct kiocb *iocb) { blk_opf_t opf = REQ_OP_WRITE | REQ_SYNC | REQ_IDLE; @@ -400,7 +391,7 @@ static int blkdev_iomap_begin(struct inode *inode, loff_t offset, loff_t length, iomap->type = IOMAP_MAPPED; iomap->addr = iomap->offset; iomap->length = isize - iomap->offset; - iomap->flags |= IOMAP_F_BUFFER_HEAD; + iomap->flags |= IOMAP_F_BUFFER_HEAD; /* noop for !CONFIG_BUFFER_HEAD */ return 0; } @@ -408,6 +399,16 @@ static const struct iomap_ops blkdev_iomap_ops = { .iomap_begin = blkdev_iomap_begin, }; +#ifdef CONFIG_BUFFER_HEAD +static int blkdev_get_block(struct inode *inode, sector_t iblock, + struct buffer_head *bh, int create) +{ + bh->b_bdev = I_BDEV(inode); + bh->b_blocknr = iblock; + set_buffer_mapped(bh); + return 0; +} + static int blkdev_writepage(struct page *page, struct writeback_control *wbc) { return block_write_full_page(page, blkdev_get_block, wbc); @@ -453,6 +454,55 @@ const struct address_space_operations def_blk_aops = { .migrate_folio = buffer_migrate_folio_norefs, .is_dirty_writeback = buffer_check_dirty_writeback, }; +#else /* CONFIG_BUFFER_HEAD */ +static int blkdev_read_folio(struct file *file, struct folio *folio) +{ + return iomap_read_folio(folio, &blkdev_iomap_ops); +} + +static void blkdev_readahead(struct readahead_control *rac) +{ + iomap_readahead(rac, &blkdev_iomap_ops); +} + +static int blkdev_map_blocks(struct iomap_writepage_ctx *wpc, + struct inode *inode, loff_t offset) +{ + loff_t isize = i_size_read(inode); + + if (WARN_ON_ONCE(offset >= isize)) + return -EIO; + if (offset >= wpc->iomap.offset && + offset < wpc->iomap.offset + wpc->iomap.length) + return 0; + return blkdev_iomap_begin(inode, offset, isize - offset, + IOMAP_WRITE, &wpc->iomap, NULL); +} + +static const struct iomap_writeback_ops blkdev_writeback_ops = { + .map_blocks = blkdev_map_blocks, +}; + +static int blkdev_writepages(struct address_space *mapping, + struct writeback_control *wbc) +{ + struct iomap_writepage_ctx wpc = { }; + + return iomap_writepages(mapping, wbc, &wpc, &blkdev_writeback_ops); +} + +const struct address_space_operations def_blk_aops = { + .dirty_folio = filemap_dirty_folio, + .release_folio = iomap_release_folio, + .invalidate_folio = iomap_invalidate_folio, + .read_folio = blkdev_read_folio, + .readahead = blkdev_readahead, + .writepages = blkdev_writepages, + .is_partially_uptodate = iomap_is_partially_uptodate, + .error_remove_page = generic_error_remove_page, + .migrate_folio = filemap_migrate_folio, +}; +#endif /* CONFIG_BUFFER_HEAD */ /* * for a block special file file_inode(file)->i_size is zero diff --git a/drivers/md/Kconfig b/drivers/md/Kconfig index 444517d1a2336a..2a8b081bce7dd8 100644 --- a/drivers/md/Kconfig +++ b/drivers/md/Kconfig @@ -15,6 +15,7 @@ if MD config BLK_DEV_MD tristate "RAID support" select BLOCK_HOLDER_DEPRECATED if SYSFS + select BUFFER_HEAD # BLOCK_LEGACY_AUTOLOAD requirement should be removed # after relevant mdadm enhancements - to make "names=yes" # the default - are widely available. diff --git a/fs/Kconfig b/fs/Kconfig index 18d034ec79539f..e8b17c81b83a8e 100644 --- a/fs/Kconfig +++ b/fs/Kconfig @@ -18,8 +18,12 @@ config VALIDATE_FS_PARSER config FS_IOMAP bool +config BUFFER_HEAD + bool + # old blockdev_direct_IO implementation. Use iomap for new code instead config LEGACY_DIRECT_IO + depends on BUFFER_HEAD bool if BLOCK diff --git a/fs/Makefile b/fs/Makefile index e513aaee0603a0..f9541f40be4e08 100644 --- a/fs/Makefile +++ b/fs/Makefile @@ -17,7 +17,7 @@ obj-y := open.o read_write.o file_table.o super.o \ fs_types.o fs_context.o fs_parser.o fsopen.o init.o \ kernel_read_file.o mnt_idmapping.o remap_range.o -obj-$(CONFIG_BLOCK) += buffer.o mpage.o +obj-$(CONFIG_BUFFER_HEAD) += buffer.o mpage.o obj-$(CONFIG_PROC_FS) += proc_namespace.o obj-$(CONFIG_LEGACY_DIRECT_IO) += direct-io.o obj-y += notify/ diff --git a/fs/adfs/Kconfig b/fs/adfs/Kconfig index 44738fed66251f..1b97058f0c4a92 100644 --- a/fs/adfs/Kconfig +++ b/fs/adfs/Kconfig @@ -2,6 +2,7 @@ config ADFS_FS tristate "ADFS file system support" depends on BLOCK + select BUFFER_HEAD help The Acorn Disc Filing System is the standard file system of the RiscOS operating system which runs on Acorn's ARM-based Risc PC diff --git a/fs/affs/Kconfig b/fs/affs/Kconfig index 962b86374e1c15..1ae432d266c32f 100644 --- a/fs/affs/Kconfig +++ b/fs/affs/Kconfig @@ -2,6 +2,7 @@ config AFFS_FS tristate "Amiga FFS file system support" depends on BLOCK + select BUFFER_HEAD select LEGACY_DIRECT_IO help The Fast File System (FFS) is the common file system used on hard diff --git a/fs/befs/Kconfig b/fs/befs/Kconfig index 9550b6462b8147..5fcfc4024ffe6f 100644 --- a/fs/befs/Kconfig +++ b/fs/befs/Kconfig @@ -2,6 +2,7 @@ config BEFS_FS tristate "BeOS file system (BeFS) support (read only)" depends on BLOCK + select BUFFER_HEAD select NLS help The BeOS File System (BeFS) is the native file system of Be, Inc's diff --git a/fs/bfs/Kconfig b/fs/bfs/Kconfig index 3a757805b58568..8e7ef866b62a62 100644 --- a/fs/bfs/Kconfig +++ b/fs/bfs/Kconfig @@ -2,6 +2,7 @@ config BFS_FS tristate "BFS file system support" depends on BLOCK + select BUFFER_HEAD help Boot File System (BFS) is a file system used under SCO UnixWare to allow the bootloader access to the kernel image and other important diff --git a/fs/efs/Kconfig b/fs/efs/Kconfig index 2df1bac8b375b1..0833e533df9d53 100644 --- a/fs/efs/Kconfig +++ b/fs/efs/Kconfig @@ -2,6 +2,7 @@ config EFS_FS tristate "EFS file system support (read only)" depends on BLOCK + select BUFFER_HEAD help EFS is an older file system used for non-ISO9660 CD-ROMs and hard disk partitions by SGI's IRIX operating system (IRIX 6.0 and newer diff --git a/fs/exfat/Kconfig b/fs/exfat/Kconfig index 147edeb044691d..cbeca8e44d9b38 100644 --- a/fs/exfat/Kconfig +++ b/fs/exfat/Kconfig @@ -2,6 +2,7 @@ config EXFAT_FS tristate "exFAT filesystem support" + select BUFFER_HEAD select NLS select LEGACY_DIRECT_IO help diff --git a/fs/ext2/Kconfig b/fs/ext2/Kconfig index 77393fda99af09..74d98965902e16 100644 --- a/fs/ext2/Kconfig +++ b/fs/ext2/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config EXT2_FS tristate "Second extended fs support" + select BUFFER_HEAD select FS_IOMAP select LEGACY_DIRECT_IO help diff --git a/fs/ext4/Kconfig b/fs/ext4/Kconfig index 86699c8cab281c..e20d59221fc05b 100644 --- a/fs/ext4/Kconfig +++ b/fs/ext4/Kconfig @@ -28,6 +28,7 @@ config EXT3_FS_SECURITY config EXT4_FS tristate "The Extended 4 (ext4) filesystem" + select BUFFER_HEAD select JBD2 select CRC16 select CRYPTO diff --git a/fs/f2fs/Kconfig b/fs/f2fs/Kconfig index 03ef087537c7c4..68a1e23e1557c7 100644 --- a/fs/f2fs/Kconfig +++ b/fs/f2fs/Kconfig @@ -2,6 +2,7 @@ config F2FS_FS tristate "F2FS filesystem support" depends on BLOCK + select BUFFER_HEAD select NLS select CRYPTO select CRYPTO_CRC32 diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig index afe83b4e717280..25fae1c83725bc 100644 --- a/fs/fat/Kconfig +++ b/fs/fat/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config FAT_FS tristate + select BUFFER_HEAD select NLS select LEGACY_DIRECT_IO help diff --git a/fs/freevxfs/Kconfig b/fs/freevxfs/Kconfig index 0e2fc08f7de492..912107ebea6f40 100644 --- a/fs/freevxfs/Kconfig +++ b/fs/freevxfs/Kconfig @@ -2,6 +2,7 @@ config VXFS_FS tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" depends on BLOCK + select BUFFER_HEAD help FreeVxFS is a file system driver that support the VERITAS VxFS(TM) file system format. VERITAS VxFS(TM) is the standard file system diff --git a/fs/gfs2/Kconfig b/fs/gfs2/Kconfig index 03c966840422ec..be7f87a8e11ae1 100644 --- a/fs/gfs2/Kconfig +++ b/fs/gfs2/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config GFS2_FS tristate "GFS2 file system support" + select BUFFER_HEAD select FS_POSIX_ACL select CRC32 select LIBCRC32C diff --git a/fs/hfs/Kconfig b/fs/hfs/Kconfig index d985066006d588..5ea5cd8ecea9c0 100644 --- a/fs/hfs/Kconfig +++ b/fs/hfs/Kconfig @@ -2,6 +2,7 @@ config HFS_FS tristate "Apple Macintosh file system support" depends on BLOCK + select BUFFER_HEAD select NLS select LEGACY_DIRECT_IO help diff --git a/fs/hfsplus/Kconfig b/fs/hfsplus/Kconfig index 8034e7827a690b..8ce4a33a9ac788 100644 --- a/fs/hfsplus/Kconfig +++ b/fs/hfsplus/Kconfig @@ -2,6 +2,7 @@ config HFSPLUS_FS tristate "Apple Extended HFS file system support" depends on BLOCK + select BUFFER_HEAD select NLS select NLS_UTF8 select LEGACY_DIRECT_IO diff --git a/fs/hpfs/Kconfig b/fs/hpfs/Kconfig index ec975f4668775f..ac1e9318e65a4a 100644 --- a/fs/hpfs/Kconfig +++ b/fs/hpfs/Kconfig @@ -2,6 +2,7 @@ config HPFS_FS tristate "OS/2 HPFS file system support" depends on BLOCK + select BUFFER_HEAD select FS_IOMAP help OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS diff --git a/fs/isofs/Kconfig b/fs/isofs/Kconfig index 08ffd37b9bb8f6..51434f2a471b0f 100644 --- a/fs/isofs/Kconfig +++ b/fs/isofs/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config ISO9660_FS tristate "ISO 9660 CDROM file system support" + select BUFFER_HEAD help This is the standard file system used on CD-ROMs. It was previously known as "High Sierra File System" and is called "hsfs" on other diff --git a/fs/jfs/Kconfig b/fs/jfs/Kconfig index 51e856f0e4b8d6..17488440eef1a9 100644 --- a/fs/jfs/Kconfig +++ b/fs/jfs/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config JFS_FS tristate "JFS filesystem support" + select BUFFER_HEAD select NLS select CRC32 select LEGACY_DIRECT_IO diff --git a/fs/minix/Kconfig b/fs/minix/Kconfig index de2003974ff0d0..90ddfad2a75e8f 100644 --- a/fs/minix/Kconfig +++ b/fs/minix/Kconfig @@ -2,6 +2,7 @@ config MINIX_FS tristate "Minix file system support" depends on BLOCK + select BUFFER_HEAD help Minix is a simple operating system used in many classes about OS's. The minix file system (method to organize files on a hard disk diff --git a/fs/nilfs2/Kconfig b/fs/nilfs2/Kconfig index 7d59567465e121..7dae168e346e30 100644 --- a/fs/nilfs2/Kconfig +++ b/fs/nilfs2/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config NILFS2_FS tristate "NILFS2 file system support" + select BUFFER_HEAD select CRC32 select LEGACY_DIRECT_IO help diff --git a/fs/ntfs/Kconfig b/fs/ntfs/Kconfig index f93e69a612833f..7b2509741735a9 100644 --- a/fs/ntfs/Kconfig +++ b/fs/ntfs/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config NTFS_FS tristate "NTFS file system support" + select BUFFER_HEAD select NLS help NTFS is the file system of Microsoft Windows NT, 2000, XP and 2003. diff --git a/fs/ntfs3/Kconfig b/fs/ntfs3/Kconfig index 96cc236f7f7bd3..cdfdf51e55d797 100644 --- a/fs/ntfs3/Kconfig +++ b/fs/ntfs3/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config NTFS3_FS tristate "NTFS Read-Write file system support" + select BUFFER_HEAD select NLS select LEGACY_DIRECT_IO help diff --git a/fs/ocfs2/Kconfig b/fs/ocfs2/Kconfig index 3123da7cfb301f..2514d36cbe0157 100644 --- a/fs/ocfs2/Kconfig +++ b/fs/ocfs2/Kconfig @@ -2,6 +2,7 @@ config OCFS2_FS tristate "OCFS2 file system support" depends on INET && SYSFS && CONFIGFS_FS + select BUFFER_HEAD select JBD2 select CRC32 select QUOTA diff --git a/fs/omfs/Kconfig b/fs/omfs/Kconfig index 42b2ec35a05bfb..8470f6c3e64e6a 100644 --- a/fs/omfs/Kconfig +++ b/fs/omfs/Kconfig @@ -2,6 +2,7 @@ config OMFS_FS tristate "SonicBlue Optimized MPEG File System support" depends on BLOCK + select BUFFER_HEAD select CRC_ITU_T help This is the proprietary file system used by the Rio Karma music diff --git a/fs/qnx4/Kconfig b/fs/qnx4/Kconfig index 45b5b98376c436..a2eb826e76c602 100644 --- a/fs/qnx4/Kconfig +++ b/fs/qnx4/Kconfig @@ -2,6 +2,7 @@ config QNX4FS_FS tristate "QNX4 file system support (read only)" depends on BLOCK + select BUFFER_HEAD help This is the file system used by the real-time operating systems QNX 4 and QNX 6 (the latter is also called QNX RTP). diff --git a/fs/qnx6/Kconfig b/fs/qnx6/Kconfig index 6a9d6bce158622..8e865d72204e75 100644 --- a/fs/qnx6/Kconfig +++ b/fs/qnx6/Kconfig @@ -2,6 +2,7 @@ config QNX6FS_FS tristate "QNX6 file system support (read only)" depends on BLOCK && CRC32 + select BUFFER_HEAD help This is the file system used by the real-time operating systems QNX 6 (also called QNX RTP). diff --git a/fs/reiserfs/Kconfig b/fs/reiserfs/Kconfig index 4d22ecfe0fab65..0e6fe26458fede 100644 --- a/fs/reiserfs/Kconfig +++ b/fs/reiserfs/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config REISERFS_FS tristate "Reiserfs support (deprecated)" + select BUFFER_HEAD select CRC32 select LEGACY_DIRECT_IO help diff --git a/fs/sysv/Kconfig b/fs/sysv/Kconfig index b4e23e03fbeba3..67b3f90afbfd67 100644 --- a/fs/sysv/Kconfig +++ b/fs/sysv/Kconfig @@ -2,6 +2,7 @@ config SYSV_FS tristate "System V/Xenix/V7/Coherent file system support" depends on BLOCK + select BUFFER_HEAD help SCO, Xenix and Coherent are commercial Unix systems for Intel machines, and Version 7 was used on the DEC PDP-11. Saying Y diff --git a/fs/udf/Kconfig b/fs/udf/Kconfig index 82e8bfa2dfd989..8f7ce30d47fdce 100644 --- a/fs/udf/Kconfig +++ b/fs/udf/Kconfig @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only config UDF_FS tristate "UDF file system support" + select BUFFER_HEAD select CRC_ITU_T select NLS select LEGACY_DIRECT_IO diff --git a/fs/ufs/Kconfig b/fs/ufs/Kconfig index 6d30adb6b890fc..9301e7ecd09210 100644 --- a/fs/ufs/Kconfig +++ b/fs/ufs/Kconfig @@ -2,6 +2,7 @@ config UFS_FS tristate "UFS file system support (read only)" depends on BLOCK + select BUFFER_HEAD help BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD, OpenBSD and NeXTstep) use a file system called UFS. Some System V diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 7002a9ff63a3da..c89ef50d5112fc 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -16,8 +16,6 @@ #include #include -#ifdef CONFIG_BLOCK - enum bh_state_bits { BH_Uptodate, /* Contains valid data */ BH_Dirty, /* Is dirty */ @@ -198,7 +196,6 @@ void set_bh_page(struct buffer_head *bh, struct page *page, unsigned long offset); void folio_set_bh(struct buffer_head *bh, struct folio *folio, unsigned long offset); -bool try_to_free_buffers(struct folio *); struct buffer_head *folio_alloc_buffers(struct folio *folio, unsigned long size, bool retry); struct buffer_head *alloc_page_buffers(struct page *page, unsigned long size, @@ -213,10 +210,6 @@ void end_buffer_async_write(struct buffer_head *bh, int uptodate); /* Things to do with buffers at mapping->private_list */ void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode *inode); -int inode_has_buffers(struct inode *); -void invalidate_inode_buffers(struct inode *); -int remove_inode_buffers(struct inode *inode); -int sync_mapping_buffers(struct address_space *mapping); int generic_buffers_fsync_noflush(struct file *file, loff_t start, loff_t end, bool datasync); int generic_buffers_fsync(struct file *file, loff_t start, loff_t end, @@ -240,9 +233,6 @@ void __bforget(struct buffer_head *); void __breadahead(struct block_device *, sector_t block, unsigned int size); struct buffer_head *__bread_gfp(struct block_device *, sector_t block, unsigned size, gfp_t gfp); -void invalidate_bh_lrus(void); -void invalidate_bh_lrus_cpu(void); -bool has_bh_in_lru(int cpu, void *dummy); struct buffer_head *alloc_buffer_head(gfp_t gfp_flags); void free_buffer_head(struct buffer_head * bh); void unlock_buffer(struct buffer_head *bh); @@ -258,8 +248,6 @@ int __bh_read(struct buffer_head *bh, blk_opf_t op_flags, bool wait); void __bh_read_batch(int nr, struct buffer_head *bhs[], blk_opf_t op_flags, bool force_lock); -extern int buffer_heads_over_limit; - /* * Generic address_space_operations implementations for buffer_head-backed * address_spaces. @@ -304,8 +292,6 @@ extern int buffer_migrate_folio_norefs(struct address_space *, #define buffer_migrate_folio_norefs NULL #endif -void buffer_init(void); - /* * inline definitions */ @@ -465,7 +451,20 @@ __bread(struct block_device *bdev, sector_t block, unsigned size) bool block_dirty_folio(struct address_space *mapping, struct folio *folio); -#else /* CONFIG_BLOCK */ +#ifdef CONFIG_BUFFER_HEAD + +void buffer_init(void); +bool try_to_free_buffers(struct folio *folio); +int inode_has_buffers(struct inode *inode); +void invalidate_inode_buffers(struct inode *inode); +int remove_inode_buffers(struct inode *inode); +int sync_mapping_buffers(struct address_space *mapping); +void invalidate_bh_lrus(void); +void invalidate_bh_lrus_cpu(void); +bool has_bh_in_lru(int cpu, void *dummy); +extern int buffer_heads_over_limit; + +#else /* CONFIG_BUFFER_HEAD */ static inline void buffer_init(void) {} static inline bool try_to_free_buffers(struct folio *folio) { return true; } @@ -473,9 +472,10 @@ static inline int inode_has_buffers(struct inode *inode) { return 0; } static inline void invalidate_inode_buffers(struct inode *inode) {} static inline int remove_inode_buffers(struct inode *inode) { return 1; } static inline int sync_mapping_buffers(struct address_space *mapping) { return 0; } +static inline void invalidate_bh_lrus(void) {} static inline void invalidate_bh_lrus_cpu(void) {} static inline bool has_bh_in_lru(int cpu, void *dummy) { return false; } #define buffer_heads_over_limit 0 -#endif /* CONFIG_BLOCK */ +#endif /* CONFIG_BUFFER_HEAD */ #endif /* _LINUX_BUFFER_HEAD_H */ diff --git a/include/linux/iomap.h b/include/linux/iomap.h index e2b836c2e119ae..54f50d34fd9d4f 100644 --- a/include/linux/iomap.h +++ b/include/linux/iomap.h @@ -58,7 +58,11 @@ struct vm_fault; #define IOMAP_F_DIRTY (1U << 1) #define IOMAP_F_SHARED (1U << 2) #define IOMAP_F_MERGED (1U << 3) +#ifdef CONFIG_BUFFER_HEAD #define IOMAP_F_BUFFER_HEAD (1U << 4) +#else +#define IOMAP_F_BUFFER_HEAD 0 +#endif /* CONFIG_BUFFER_HEAD */ #define IOMAP_F_XATTR (1U << 5) /* diff --git a/include/trace/events/block.h b/include/trace/events/block.h index 40e60c33cc6f3d..0e128ad5146015 100644 --- a/include/trace/events/block.h +++ b/include/trace/events/block.h @@ -12,6 +12,7 @@ #define RWBS_LEN 8 +#ifdef CONFIG_BUFFER_HEAD DECLARE_EVENT_CLASS(block_buffer, TP_PROTO(struct buffer_head *bh), @@ -61,6 +62,7 @@ DEFINE_EVENT(block_buffer, block_dirty_buffer, TP_ARGS(bh) ); +#endif /* CONFIG_BUFFER_HEAD */ /** * block_rq_requeue - place block IO request back on a queue diff --git a/mm/migrate.c b/mm/migrate.c index 24baad2571e314..fe6f8d454aff83 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -684,7 +684,7 @@ int migrate_folio(struct address_space *mapping, struct folio *dst, } EXPORT_SYMBOL(migrate_folio); -#ifdef CONFIG_BLOCK +#ifdef CONFIG_BUFFER_HEAD /* Returns true if all buffers are successfully locked */ static bool buffer_migrate_lock_buffers(struct buffer_head *head, enum migrate_mode mode) @@ -837,7 +837,7 @@ int buffer_migrate_folio_norefs(struct address_space *mapping, return __buffer_migrate_folio(mapping, dst, src, mode, true); } EXPORT_SYMBOL_GPL(buffer_migrate_folio_norefs); -#endif +#endif /* CONFIG_BUFFER_HEAD */ int filemap_migrate_folio(struct address_space *mapping, struct folio *dst, struct folio *src, enum migrate_mode mode)