From patchwork Wed Jan 18 17:30:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106738 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 aib29ajc252.phx1.oracleemaildelivery.com (aib29ajc252.phx1.oracleemaildelivery.com [192.29.103.252]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A43E7C38159 for ; Wed, 18 Jan 2023 17:31:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=/nnevV28uqXGAfRh8qUcYVWDlEUf1pu6z8ylA6A/r58=; b=h02MskoiB7Suk1t4GFFSgpq2VtIdQ+L3ATX92eV0ULTDynHlG3XhiPhfaq59LJX+btDE6JlQEzoW g6LqN/yhW8JZPzRYQISHrIhIK84I9hHF68Q85AdYDusoI40PNHz6ht31sETAynYH3j921TZAag1M Q2pUro847O8LUeP0qWNHPMbKtZXe2IUGS+Ld9oigXhf8uo0fDvlEUMavHMesKrUnIBR3jOlEpzJt 55qod6roKQMYPB7oFaiRQOxf10hJ9FzvJw8OOsoedelqANM5Q+PYxIC05jnpcJSjZAA+qD7Rj7HP BnffWUpypOCUA9cd+FP6LIPTfim8LWJtGdHySQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=/nnevV28uqXGAfRh8qUcYVWDlEUf1pu6z8ylA6A/r58=; b=C3RRqg/EAtx97A8sLe93IdQVBy2BtlRIDvNCp3sSWcfmD6QAKIaSt36rvqt4GGHvH/+Mi7A8HEh5 2SQs2zIlGo4pMqcMwAVV36g+mh7tboYsr73jMUepjYP7TOIDm6AmkZOtTJmiTVzR3+t6zgf2wdbg pSl7rbX0c6Yv6GlHdF0gw2U+DjNHDWzyrk12HIto+WN2IShAITlxEeXLeGNTbILSS+wqVwdc/VO5 GQPNSzNAEdv4KuBM43a7E+mTd+Aa3XIlcun3WanDQ9KjCmyjbd3mVgp2SdRBuZP3T9p+UDSmy3Mr VO1RIxQ1vYAg34K158pcSeBv7xbIJEBtwIlMiA== Received: by omta-ad3-fd1-301-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO000NIZBSX800@omta-ad3-fd1-301-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:04 +0000 (GMT) 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=tKKUPVUCc1vcjlD9WoFla6fgqGJV6pEZLd5u8wPj4kY=; b=W2RLJZtWjZmHv9sTcMQH48sXB/ JAHhsX1mtELnQxarHrPAvgoQZ/CtP7dC4EJQcW5jwgduy+PTzAUSNbidoYL2CCsx4T1g1EAJE/+bs vhnZKih4QVXkR3XHuN5lyqL9REaBX/aSqtuhPh7kUikPHUQSqk50bv2C91GV+3pL4e5EPgQPuqfGM pePNW2rboF5ElpEixHLdm7XU5CHV01F9sUldqJXn5K7Nv9ej49ndyAZCfNKB0q8VSicGkqQb451Od Ze44hQEf2g3VOFwBvBXQ09WyfI81/CGsglkNf9S7mTE8p+XuujCBqktlBUATnjwIbxC5ygo51PCNK sJk88oBQ==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:21 +0100 Message-id: <20230118173027.294869-2-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 priorityscore=0 spamscore=0 clxscore=228 impostorscore=0 bulkscore=0 mlxscore=0 mlxlogscore=961 phishscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 1/7] minix: move releasing pages into unlink and rename X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-GUID: OqKAFXngYY062DGM7vDe3VIpWkUoF0hI X-Proofpoint-ORIG-GUID: OqKAFXngYY062DGM7vDe3VIpWkUoF0hI Reporting-Meta: AAE+dGnifyFQevO6hhcIWzZGak3w4ND8gWVRB/J4JbhQ8Odr0c8/u5sfVKLqY0Lc 8FzkAp0JANTLOKo0Px3P4CGru75SXHZs/nPc1a3ut0Z+dxXCC1naRRZTwbeRwa0V VxEXZvEl2y8kpDFQT2TKEEEP2UdMzec5WoS8Of7vBxh300GU63ST6r0FGetuPT4+ tDj/RGe7vnJEIvt62Exjz/WXti6QP8Z2D49yrQpUNAU6saBtXukUBrgPh8VPcVY7 1tkFF65rTPrPD6Zr07lbZW/P0pgEATrUkqKgFwIPcF57+3dsT3SQHATD8qpRQFpb LJzUKy/3siBE35hWUmzS1svJMnJ7mtonhhcScDd14V8K8moU4mIvgWp+c+jYTxmy eounkzlKmzkdVTQAxuUC33552ySQKtFITnIBiCJsVsrWPcImOqRx/QHP7x2xbjVg sSJuQ2uqIujvJJot6fDDcz0K/nl0PLw7oJ2PrxxcEYzVRzDNz8Li6+gbe2m+jC5D ZZexni1voBdyEz7tcZq7BJ5e46fGoeuEVfiJMx0N81I= Instead of consuming the page reference and kmap in the low-level minix_delete_entry and minix_set_link helpers, do it in the callers where that code can be shared with the error cleanup path. Signed-off-by: Christoph Hellwig --- fs/minix/dir.c | 2 -- fs/minix/namei.c | 19 ++++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/fs/minix/dir.c b/fs/minix/dir.c index dcfe5b25378b54..ec462330e749af 100644 --- a/fs/minix/dir.c +++ b/fs/minix/dir.c @@ -306,7 +306,6 @@ int minix_delete_entry(struct minix_dir_entry *de, struct page *page) } else { unlock_page(page); } - dir_put_page(page); inode->i_ctime = inode->i_mtime = current_time(inode); mark_inode_dirty(inode); return err; @@ -430,7 +429,6 @@ void minix_set_link(struct minix_dir_entry *de, struct page *page, } else { unlock_page(page); } - dir_put_page(page); dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); } diff --git a/fs/minix/namei.c b/fs/minix/namei.c index 8afdc408ca4fd5..5fc696e032c543 100644 --- a/fs/minix/namei.c +++ b/fs/minix/namei.c @@ -150,23 +150,23 @@ static int minix_mkdir(struct user_namespace *mnt_userns, struct inode *dir, static int minix_unlink(struct inode * dir, struct dentry *dentry) { - int err = -ENOENT; struct inode * inode = d_inode(dentry); struct page * page; struct minix_dir_entry * de; + int err; de = minix_find_entry(dentry, &page); if (!de) - goto end_unlink; - + return -ENOENT; err = minix_delete_entry(de, page); - if (err) - goto end_unlink; + kunmap(page); + put_page(page); + if (err) + return err; inode->i_ctime = dir->i_ctime; inode_dec_link_count(inode); -end_unlink: - return err; + return 0; } static int minix_rmdir(struct inode * dir, struct dentry *dentry) @@ -223,7 +223,10 @@ static int minix_rename(struct user_namespace *mnt_userns, new_de = minix_find_entry(new_dentry, &new_page); if (!new_de) goto out_dir; + err = 0; minix_set_link(new_de, new_page, old_inode); + kunmap(new_page); + put_page(new_page); new_inode->i_ctime = current_time(new_inode); if (dir_de) drop_nlink(new_inode); @@ -243,8 +246,6 @@ static int minix_rename(struct user_namespace *mnt_userns, minix_set_link(dir_de, dir_page, new_dir); inode_dec_link_count(old_dir); } - return 0; - out_dir: if (dir_de) { kunmap(dir_page); From patchwork Wed Jan 18 17:30:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106739 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 aib29ajc252.phx1.oracleemaildelivery.com (aib29ajc252.phx1.oracleemaildelivery.com [192.29.103.252]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 896E2C46467 for ; Wed, 18 Jan 2023 17:31:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=17d+bSkSlvaQ0viQdwiAUQ/HJKxmN0UBtrEYAJSCEMs=; b=vgyd7tdCgeZ9jH3uu2e0btQfMzqulAv9j+dKWLWlXNVtv6Yn0wpFgSuVxzi96074LXfxZy0YhD8v BI2GWmhWzPxwDz2DsZjs9OyS3cLuPPkZkqUwlXpzVNbZZ0WTjlEYcgolyJEGgWcjjjPABh4osUiD 50m8UGU+MhcDbiZTSfVyd1wQPvFBlPzedzfMWr+OFurIpaRURxc8IynXVCuXDlwsJYllekOoB4/l 9j51Noq7azGCFKSFFVhPNfSVCP3JquS77nN3aonf8ayc6F+h99FQdLrRh5yqB7mrKgpbekakhKUt nS2t+SxcDwyaMwFQZJF6dYXX1muALkcs8C8Fww== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=17d+bSkSlvaQ0viQdwiAUQ/HJKxmN0UBtrEYAJSCEMs=; b=LRsnbrPBBVS9BvX2PNqptqkG13V1Ga/TQTQNlGJDjgj0qegmiN8qa01sjxnOojpYatkI75jJ5mvn DcK6nA+dDPCwLeoPOXyPUFgS12SBpWkr+3M7Z8KVaPOYbgLJN6IGs/RE/7e3JDVek1fgPcZYQ/zF xfc+EbH5g1QhmJWwf+3Y3qIaRMJsTJIGv04J0TOqrGIeUMLlhaGjX3EBNsWRkK1HWJZhy7n5j94G JKevIWFnn0krSlVhc4FSGg11JSuFO4QUhzw3coTN2oGrdbAbBBAngtV7x9WVbNQ3dtQRptNeoGU/ hvp1M5ZKbKnLsLFQJWoYh+kgOmMwfo2m0LoTvA== Received: by omta-ad3-fd1-301-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO000O2ZBTX800@omta-ad3-fd1-301-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:05 +0000 (GMT) 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=MsUsFoYQrTDA+hFUE1VWaBiacxBoUahLt80xRKfGZMs=; b=kqj2fnr+ij0si90SGxbS9qXDce 2JYRKEHhI08O/eeOkZ4fGkif49Gsu87pWSEM4bCYAka8wxoBOy8Zc580p2lB4mZWpTixufgfK4OWL QOavXNp6Asr34uSPGFg/IlFkuGxb7C9Oi725gTlRiHA/LbWnneZBscVJ9VevMC6By9zCafaIYLB2E AAtGIINa79oLsbuf7OKhFM5ul79N4sg8/31bpJaYz/xFON4czyRlrMVFTN7bYi0CwSZkkYVHqz2ja 0k4Y+DBDHOLUeyjVmwWHyPJIbN7Pq7wEVKXlZb0IoaURU0TlddjqfeacFkSNiucvibBPeu9Z+lfuf mpMph1gA==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:22 +0100 Message-id: <20230118173027.294869-3-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 clxscore=235 priorityscore=0 mlxscore=0 spamscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 2/7] minix: fix error handling in minix_delete_entry X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-GUID: fyyK2bN_guRdHuaR9zdjwtEE2WAXz9VD X-Proofpoint-ORIG-GUID: fyyK2bN_guRdHuaR9zdjwtEE2WAXz9VD Reporting-Meta: AAF+DhxvWj2jXmkXIsfQdOfuZ0cAubSG4K4kz/zqFZ965ABGCJgyrMHUeU2mekH1 ZLU3C3x6NuXjbFDQe2CwnzztGpeUePM3AM6e5USCl1qALjbM08ifeGcCeYerfAyA R/9kK685Pnt3I15ZIuGXC5ihio7TAHD5D1hluG2dy3fqLoXazfo/3KMyVq6rTm/9 siC+OfJ+WRIJyO0tnoqJq0lcxoCrMDRiY7mr3hla5kS/43+fKI6sx5ZRlniF+OtF WuOU7/2D5QD7T3cj/5oTI7tbYevD+mBA3Hx5MQkwmu6oamoKNKu2L8qCm9yuOz0d AN3Qt5BFKSMjqudhS0MpEBVVkqtwoAMnpUm1MDgoiwQkkFXEg52DBR4DeMnzH2qj 6Dl51oyFq2qwXocrlSMp5X28e3vIQEJG9QjP51n94iin7bZNRiqF/EqI8mt0YJab G4HbNknV5FcfOdvtjm3pM6RCwLY3Ffj+ujN4PVb9rV/r2EiALX1VibfR7aJ8+d7M YuvTLpz0QQDqi7eXslfx/a0WfxTqu2Y1MWg+1Vt2NXRH If minix_prepare_chunk fails, updating c/mtime and marking the dir inode dirty is wrong, as the inode hasn't been modified. Signed-off-by: Christoph Hellwig --- fs/minix/dir.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/fs/minix/dir.c b/fs/minix/dir.c index ec462330e749af..242e179aa1fbeb 100644 --- a/fs/minix/dir.c +++ b/fs/minix/dir.c @@ -297,18 +297,20 @@ int minix_delete_entry(struct minix_dir_entry *de, struct page *page) lock_page(page); err = minix_prepare_chunk(page, pos, len); - if (err == 0) { - if (sbi->s_version == MINIX_V3) - ((minix3_dirent *) de)->inode = 0; - else - de->inode = 0; - err = dir_commit_chunk(page, pos, len); - } else { + if (err) { unlock_page(page); + return err; } + if (sbi->s_version == MINIX_V3) + ((minix3_dirent *)de)->inode = 0; + else + de->inode = 0; + err = dir_commit_chunk(page, pos, len); + if (err) + return err; inode->i_ctime = inode->i_mtime = current_time(inode); mark_inode_dirty(inode); - return err; + return 0; } int minix_make_empty(struct inode *inode, struct inode *dir) From patchwork Wed Jan 18 17:30:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106741 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 aib29ajc253.phx1.oracleemaildelivery.com (aib29ajc253.phx1.oracleemaildelivery.com [192.29.103.253]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CDE10C32793 for ; Wed, 18 Jan 2023 17:31:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=7NpcWo/OT5GMB9zLDFOtU+r7eBYYo4oMq7Xx6NFTjhs=; b=Kb1Z9da7rzUeXuthYN59TvzU66mTJfsXVIblvrRgjtohyNkBOQhGOW9lO/Aa9hW72TMsylJa95yN qkqhCQ61fWoyeNCnjZcHQzKbp12Ag4GL3DW89wndQtisrWo3qLdL8LJMxd3/IxuouS3OzNKV1sng FdqJkeYXOk3kF10TUmCx+SRtsu5Vi4Kb8AYncxUNKRWnwkphijqNm0w2qKxGN7D6HZi7YgXttPtK lgbhzVywZscDpf10bPqVWZoxVes0i0LQ5Sv/+Iir5w+MjAdCnvk4m455fNE/qDO2j7otSukDXT6b 3lAwio0im2oSRo3P/8oBqruqdE4R2qDcIn/N0g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=7NpcWo/OT5GMB9zLDFOtU+r7eBYYo4oMq7Xx6NFTjhs=; b=LbCfh5HGD8c7jUnkoa0vIEXl2DHIYofzi3ObkZylVbaS+pxwpR46f3saWv5rRYxL30pouy9ZDWR6 3MZkhj3bDa/7KuSgxnMk6eKpWQXRgkQQArBlCiXHIh+mwExBxUe60wxpw7yGR9n/ucMTIEOnz+iw d1zoM3XzsK6lMBG/c6YYSmxoWjM029nXzajXVDp/3ZMbdt/5e5J4ToJ0KN7y6g933LcwGixofTMG kd5Ymkd+WJBt9fW77KlE0GZ8pDg75prsqqnTWlQmJEf9GVFIuauimSuS0/VVJ6vu1XZltMD+I36r F7fUd/lv6WWM1FgLC5hOZS46hayCPgq/aC0hig== Received: by omta-ad3-fd1-302-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO00MKRZBSA8D0@omta-ad3-fd1-302-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:04 +0000 (GMT) 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=IK5go+LYlZzyyL0UG1E7ybATwbkUdMWL1x4AyvlHUwI=; b=22EHDJ091Mc3KuCstacxTn+6U1 TtnzRBznDgrz0So3oaYkMeFGRgj57zvpXYFUDSdqIZCgYRkHBvwHfNjsXzrP/xQqOVenmai+nAW05 fAdQseByMb+clpStiSc1jaAggo5QN6wpqlWBa4LFiuGeCZQTwywEGcNFv57TECBX0jtat3EobXTs3 AAuTXZlnaD8uWKiY541D53Z2S5GCsZPQrhEooQxpEasFeFqVjWXpIG4T+M4rZXyBOYzvSLrlcDucJ OM2qASNW5swyWRdm0BMqklqdwx4TTiiRsUbp0AvE/p/fb51scw/1RLWSo3a+Nh0FNvVDREyxuYrqN vC+yzHTQ==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:23 +0100 Message-id: <20230118173027.294869-4-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 impostorscore=0 bulkscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=999 clxscore=228 malwarescore=0 phishscore=0 priorityscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 3/7] minix: fix error handling in minix_set_link X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-GUID: uf6z4MOBltQ5Wgp2TzdXS_NuGK8JOJcU X-Proofpoint-ORIG-GUID: uf6z4MOBltQ5Wgp2TzdXS_NuGK8JOJcU Reporting-Meta: AAF+DhxvWj2jXmkXIsfQdOfuZ0cAubSG4K4kz/zqFZ965ABGCJgyrMHUeU2mekH1 ZLU3C3x6NuXjbFDQe2BnnzztGpeUePM3AM4apKzezd3ftEZ7VEY7fW5eVSYJR1jO tAlPHCm/ldpjtevZpZ3Q2BePadipu7EHczjxAWdMcOA2z45oHilXbga48rr0HmuA cdwI1Rwc4sqdZ+2aK/ZXMneZPNtXZku98CXzJbXYBPJQJhh3QDaaKYq86Ylyt3w+ AES80DJGISSiJG6SFPQP/i4QerzjamPgWzJ/Cxs1ABJnA1H0l/FMxpafd7OAJmKM 4s8NH15nn8vS0oSNixVQDmoW+1hVxetE1+YYgiISLyTWr/anpTomPCozwJ19Kucs ft92yjfenq2arsUTsZe4UQm8LoU0gqz63w/bHpzH/VD6JuL2GFSgsOn5a8hsR1ug iBliXYC6cgB1/sc9OFdf83PyfaRwFAdQcC7Ldp4i0R4+xX8HUZqJONOVirH3m9Q9 WdmWpkkyHdX5IC2uIX7scz8P1JXzgoN5fHpQ/1/ozjE= If minix_prepare_chunk fails, updating c/mtime and marking the dir inode dirty is wrong, as the inode hasn't been modified. Also propagate the error to the caller. Note that this moves the dir_put_page call later, but that matches other uses of this helper in the directory code. Signed-off-by: Christoph Hellwig --- fs/minix/dir.c | 22 ++++++++++++---------- fs/minix/minix.h | 3 ++- fs/minix/namei.c | 10 ++++++---- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/fs/minix/dir.c b/fs/minix/dir.c index 242e179aa1fbeb..34c1cdb5dc7d47 100644 --- a/fs/minix/dir.c +++ b/fs/minix/dir.c @@ -410,8 +410,8 @@ int minix_empty_dir(struct inode * inode) } /* Releases the page */ -void minix_set_link(struct minix_dir_entry *de, struct page *page, - struct inode *inode) +int minix_set_link(struct minix_dir_entry *de, struct page *page, + struct inode *inode) { struct inode *dir = page->mapping->host; struct minix_sb_info *sbi = minix_sb(dir->i_sb); @@ -420,19 +420,21 @@ void minix_set_link(struct minix_dir_entry *de, struct page *page, int err; lock_page(page); - err = minix_prepare_chunk(page, pos, sbi->s_dirsize); - if (err == 0) { - if (sbi->s_version == MINIX_V3) - ((minix3_dirent *) de)->inode = inode->i_ino; - else - de->inode = inode->i_ino; - err = dir_commit_chunk(page, pos, sbi->s_dirsize); - } else { + if (err) { unlock_page(page); + return err; } + if (sbi->s_version == MINIX_V3) + ((minix3_dirent *)de)->inode = inode->i_ino; + else + de->inode = inode->i_ino; + err = dir_commit_chunk(page, pos, sbi->s_dirsize); + if (err) + return err; dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); + return 0; } struct minix_dir_entry * minix_dotdot (struct inode *dir, struct page **p) diff --git a/fs/minix/minix.h b/fs/minix/minix.h index 20217336802570..8f7a636bd1b241 100644 --- a/fs/minix/minix.h +++ b/fs/minix/minix.h @@ -69,7 +69,8 @@ extern int minix_add_link(struct dentry*, struct inode*); extern int minix_delete_entry(struct minix_dir_entry*, struct page*); extern int minix_make_empty(struct inode*, struct inode*); extern int minix_empty_dir(struct inode*); -extern void minix_set_link(struct minix_dir_entry*, struct page*, struct inode*); +int minix_set_link(struct minix_dir_entry *de, struct page *page, + struct inode *inode); extern struct minix_dir_entry *minix_dotdot(struct inode*, struct page**); extern ino_t minix_inode_by_name(struct dentry*); diff --git a/fs/minix/namei.c b/fs/minix/namei.c index 5fc696e032c543..bfbadd85d01032 100644 --- a/fs/minix/namei.c +++ b/fs/minix/namei.c @@ -223,10 +223,11 @@ static int minix_rename(struct user_namespace *mnt_userns, new_de = minix_find_entry(new_dentry, &new_page); if (!new_de) goto out_dir; - err = 0; - minix_set_link(new_de, new_page, old_inode); + err = minix_set_link(new_de, new_page, old_inode); kunmap(new_page); put_page(new_page); + if (err) + goto out_dir; new_inode->i_ctime = current_time(new_inode); if (dir_de) drop_nlink(new_inode); @@ -243,8 +244,9 @@ static int minix_rename(struct user_namespace *mnt_userns, mark_inode_dirty(old_inode); if (dir_de) { - minix_set_link(dir_de, dir_page, new_dir); - inode_dec_link_count(old_dir); + err = minix_set_link(dir_de, dir_page, new_dir); + if (!err) + inode_dec_link_count(old_dir); } out_dir: if (dir_de) { From patchwork Wed Jan 18 17:30:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106740 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 aib29ajc248.phx1.oracleemaildelivery.com (aib29ajc248.phx1.oracleemaildelivery.com [192.29.103.248]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 465A9C678D6 for ; Wed, 18 Jan 2023 17:31:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=BFKHqQxdouWxcT+IpZ9iu/mIXvx/WLBwuejRKD/oK0c=; b=z0oTVi3MWP1QTS0300auz+xcgPnQ+b5tvc9qS8ksFdK/IZ7NX8dHxQAWAvaRsNbec7nH0Y1W8zof p6tXMhG7Tv72XjGQfqgoXMNvF5cYAMzTAVQxxMw1K718Anyl/MMIsXH8J7psTdM8hg05KAUP6Bbv BiG09T1XgvxRP8Uf09aQMgYGRcZ+gc+rzLN+S2v+JNMEIscQfGR2Yy6ZIFmDcLmQ2th5D/vPymOW v7g5KsN69607fdSa3XeOQt02eelriDhKRYS2ivbUJXYrHC6b6PGNVO9p4IPtnjsMZnGALpmcvfIK aza2mRhIcgdOlmhX1VnlZ+/Q0PzZv+B5759sjA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=BFKHqQxdouWxcT+IpZ9iu/mIXvx/WLBwuejRKD/oK0c=; b=NMUe4Ldf52n9KU4ejBBe9iHUmwprqt0Rt/nyeySZDDAI1o1YrtGfRcH2g5V2lT1DlSux0/8gKmmC 9RoNEP3VhhQcXxgyHTAC+vYuUGJKdDgQdbGpy5o+hfPOJpPNRgFxVho63gMVC/MGJKBJDOUGpd2O C9f7AVjDUddnvyH4i/pMDbKNFIR0sBmUccNz7PuipGHTpHPGd160D74lpkYYFTO9voqNxO3lIgE9 Uq1+RFOQzLy4u4ZGrX3a4V/qkI/toTPgbrYrtKM+wBudP8o4fB24SBTROGbUiadu+IBQ+usZmob5 Wx7FYCC/DEVPErdYLHbcvoV2T5PLszA+ttiPQA== Received: by omta-ad2-fd1-201-us-phoenix-1.omtaad2.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO00DOHZBTD170@omta-ad2-fd1-201-us-phoenix-1.omtaad2.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:05 +0000 (GMT) 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=BoUmolxcC4WWev3Bomon8s2I6PcBF6tpLGBKR42OIV8=; b=ZQCLvKpSD0KCAbbeXHpyfp33/6 qx0a/KrfAFDWErK41OUDp0S+BSBMCboHO/UrxmMoAIzr7RofHT8nUn9Z0cYLsDia4oBqBcxHsEsHn DgtNTzw6mUh3h1qKIMi1ccvVMnNrnywN2365w7y0YciLh0/5mUI7c5mAAgggpDJlVo+a2gYS6j5gf HQzin5r1Wvq09X86pLvUuXLWnxta7uxx9qHcpSS3UDz48bByC9KuOuV8pfOh+heFHaBsutGEMTzsQ vOflyNklFdlV19i73Z1dwLI408NnZpyVftwfyeJ2kdNGM7wV4We11Q58QrO+8b3qIuK5wmELaRtd5 YdSZhIIA==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:24 +0100 Message-id: <20230118173027.294869-5-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 impostorscore=0 bulkscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=488 clxscore=181 malwarescore=0 phishscore=0 priorityscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 4/7] minix: don't flush page immediately for DIRSYNC directories X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-GUID: xaigb9Uu7yS6EHsVX4CTe04UV2m4irEa X-Proofpoint-ORIG-GUID: xaigb9Uu7yS6EHsVX4CTe04UV2m4irEa Reporting-Meta: AAFtBdav8nJZ6QjCjUiBH/XplsIlh2RbNxr1pPaJHEKe2nZVRzJFILtEg8KQmWk5 azcrL/+aXnG65318UQe13GhThJGj+oCGl32PhtimnOzCagGqA+52bffg1I7ofpRh DUcp+JcsD02BBmr3MBivmBDOEuYa0q4t9XUncnqMBM5NU9CcgglkyjINg8DQ2XZ0 UKy+jeC6n3dUEcfwlGKDGjyXIoCm03bmBDw2YwdJjA77iw9Hk0lMcr4VACSS8w5r twu44WeAjBdlw9l3O1/9HNsDBSkFQHJmYciAbei0AByqqmd8CXDAkjv6OGurLLP2 WXQZdhqot/av1oJHqVgPdlTtBbBfbSCq8aXywvYApJvHlMqUhJ8nJUGwbmmhy40p pYIgzTDCPlxu6Q4XnLHM2s+gIDy7ZJTpouKaI1/eDAKKgziSX6u2WSn3RiiNh6ST HtLzCYNaSlNQ/TpYNWx8uK8D6blMIKW0Vebp2V/U2iNQ9R3ytbp0WhAacZDUVyZ/ A8z30Axd7a6khW+3ud6xqpBe8DchTjkO3MnUOCfDeUY= We do not need to writeout modified directory blocks immediately when modifying them while the page is locked. It is enough to do the flush somewhat later which has the added benefit that inode times can be flushed as well. It also allows us to stop depending on write_one_page() function. Ported from an ext2 patch by Jan Kara. Signed-off-by: Christoph Hellwig --- fs/minix/dir.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/fs/minix/dir.c b/fs/minix/dir.c index 34c1cdb5dc7d47..bf9858f76b6ae1 100644 --- a/fs/minix/dir.c +++ b/fs/minix/dir.c @@ -46,21 +46,27 @@ minix_last_byte(struct inode *inode, unsigned long page_nr) return last_byte; } -static int dir_commit_chunk(struct page *page, loff_t pos, unsigned len) +static void dir_commit_chunk(struct page *page, loff_t pos, unsigned len) { struct address_space *mapping = page->mapping; struct inode *dir = mapping->host; - int err = 0; + block_write_end(NULL, mapping, pos, len, len, page, NULL); if (pos+len > dir->i_size) { i_size_write(dir, pos+len); mark_inode_dirty(dir); } - if (IS_DIRSYNC(dir)) - err = write_one_page(page); - else - unlock_page(page); + unlock_page(page); +} + +static int minix_handle_dirsync(struct inode *dir) +{ + int err; + + err = filemap_write_and_wait(dir->i_mapping); + if (!err) + err = sync_inode_metadata(dir, 1); return err; } @@ -274,9 +280,10 @@ int minix_add_link(struct dentry *dentry, struct inode *inode) memset (namx + namelen, 0, sbi->s_dirsize - namelen - 2); de->inode = inode->i_ino; } - err = dir_commit_chunk(page, pos, sbi->s_dirsize); + dir_commit_chunk(page, pos, sbi->s_dirsize); dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); + err = minix_handle_dirsync(dir); out_put: dir_put_page(page); out: @@ -305,12 +312,10 @@ int minix_delete_entry(struct minix_dir_entry *de, struct page *page) ((minix3_dirent *)de)->inode = 0; else de->inode = 0; - err = dir_commit_chunk(page, pos, len); - if (err) - return err; + dir_commit_chunk(page, pos, len); inode->i_ctime = inode->i_mtime = current_time(inode); mark_inode_dirty(inode); - return 0; + return minix_handle_dirsync(inode); } int minix_make_empty(struct inode *inode, struct inode *dir) @@ -350,7 +355,8 @@ int minix_make_empty(struct inode *inode, struct inode *dir) } kunmap_atomic(kaddr); - err = dir_commit_chunk(page, 0, 2 * sbi->s_dirsize); + dir_commit_chunk(page, 0, 2 * sbi->s_dirsize); + err = minix_handle_dirsync(inode); fail: put_page(page); return err; @@ -429,12 +435,10 @@ int minix_set_link(struct minix_dir_entry *de, struct page *page, ((minix3_dirent *)de)->inode = inode->i_ino; else de->inode = inode->i_ino; - err = dir_commit_chunk(page, pos, sbi->s_dirsize); - if (err) - return err; + dir_commit_chunk(page, pos, sbi->s_dirsize); dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); - return 0; + return minix_handle_dirsync(dir); } struct minix_dir_entry * minix_dotdot (struct inode *dir, struct page **p) From patchwork Wed Jan 18 17:30:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106742 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 aib29ajc255.phx1.oracleemaildelivery.com (aib29ajc255.phx1.oracleemaildelivery.com [192.29.103.255]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 657F9C678DC for ; Wed, 18 Jan 2023 17:31:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=trOpjgJk2GZZm7axUl/DEU8hjzTQYBLQK9GRo7R+Dlk=; b=leGHZhJnYB8rsJ/PUQtKYAyqHp7BuMK7B6kdd0U/GHf72vRQ8bp61hOJ5hK78+wdsApE3D43nm+W TfRpjl2FIeoBhoxGg8Aq46hkVJZq4hKPXU2YGbdNX0OmpFUokoa/cYkDiotsJGhr8I3wdhJ+qAz9 O/ohRQZ4X3R3zfZHG2DwuU0070tGAt2SC9fyIeG+/Oa5w2qlR8kAI4YeBJg87pVx7qLPb+LwWsmx a3+b9UpfmzGhMVsFwfPbxFCAi/3mvfTjLM3Eetb+z4UNAuFJT2oyhEqYaqOEEJ3Wwq0jTF+w8l6X vxdWo6vbi5hwL/Fv+y6eHfy4ZJoYDeU/paN3/g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=trOpjgJk2GZZm7axUl/DEU8hjzTQYBLQK9GRo7R+Dlk=; b=aU4iRrbDbIGDa8fciLiIjiwjDcenwGwDntEAdVCXA+WSVgAUllARvjMhKtyS8KwPL7SW8qzTbJNS AvKmMAWFf6dbNsPRASPEHz0AbGUDEVW1dCnu/KyN2lzv/X+Riz6lXIzIoGrr7brYBt/UbFe8Wjkd 8GF2SbBe7b/A5vbKaAVwBQwAzMF0H8BTBGhhH8oynujkAxtDCCy9SNltRKhFmf3owBuz1VezTBij pAVId1BVkJIaR9dvmJc55cIcqUOKZ7m1Lgk6WzfCy/Pbu6ia5T01cd10hTWX+LBmFp0xiroV8MRr uc5n4gMV3Xyrjw2RgCnSqOPFPpU6WZ5kMCnk2A== Received: by omta-ad3-fd3-302-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO001ZBZBTZZ20@omta-ad3-fd3-302-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:05 +0000 (GMT) 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=RiDLIEceuZ9xYcAquYO1xUuvp0itrlt5jINwhutKHnw=; b=n97J6P4Lj3rjm3/TGFmVVg8Wrr u/Z8bas8ry+fHYEM5YBXc8LfZPJatmLG0er+p8+/5CozJDOufcBh+tyW0g+wakyIsB/9H5FBTQ/B0 P9RF3jbwsVQOKtVzVYq7n5OOzt7LsHupFBPGD8lmcE/OHd7pBxTqExpqoyUj+zhmPtrIzvY6WCi74 ejoYGQAJZLfGPwCd34tL2WZjX757TewJV/7vUp0+iZHuP6KbIZypE49r+dwszdbfXvfZ0yZgwPc6T 5DRNKtiiyQUMu2UyCmj+gIm6vlzuH7QZqDupe5mw9DI9tktHePHc6C+y8Gg4JuWOk1p9RZQn4I0sW n3a9GVtw==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:25 +0100 Message-id: <20230118173027.294869-6-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 priorityscore=0 lowpriorityscore=0 mlxlogscore=482 mlxscore=0 impostorscore=0 spamscore=0 suspectscore=0 clxscore=181 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 5/7] sysv: don't flush page immediately for DIRSYNC directories X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-GUID: TKMoey65ppqveZaw98LpIwjMftQR_AO0 X-Proofpoint-ORIG-GUID: TKMoey65ppqveZaw98LpIwjMftQR_AO0 Reporting-Meta: AAFtBdav8nJZ6QjCjUiBH/XplsIlh2RbNxr1pPaJHEKe2nZVRzJFILtEg8KQmWk5 azcrL/+aXnG65318UQes3GhThJGj+oCGl31zCcRf9midnyS2NDDGhC8qWjZusjSo yd1yBJPsKBK6QXLvs8aLJW03tzAhCRVztmTRMlBX2iJvWvwkb+ISinFAnrxFklEU SPAT8KhmP1fMP9LJS0zuQTjfITlMJWMIpIhqQyL1VNRW1OQJYcjFUtXxqrRAJSy1 uI01ODDrl4T1Bx9cuFKLUgMoNZlCzYVIulhFP/WJCDpq7gJY0sWZP4AniBu6RGWS QmTbXcm+NPQQeaJ/vXJr1aVxw0VsL5k/Tse8YMgNxD7pJzDws7V/Psfn2Lo5BAax 9VesxN55QvCXjFrJu2TcE6TXvHRoVDPa+B4d8WocqdWYqe7mloSzCGyEvaeN/zm+ E1yXXr9BSqqdguDjt7x+AnVRNZ/uYqjHkLdChA9i9Abm3hSC1yjRtCDSYQTcXLqB MEa5ihqCTqHqTHbc4suJBzCxn8fdxoFiX/QUgr6fRRna We do not need to writeout modified directory blocks immediately when modifying them while the page is locked. It is enough to do the flush somewhat later which has the added benefit that inode times can be flushed as well. It also allows us to stop depending on write_one_page() function. Ported from an ext2 patch by Jan Kara. Signed-off-by: Christoph Hellwig --- fs/sysv/dir.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/fs/sysv/dir.c b/fs/sysv/dir.c index 88e38cd8f5c9ae..16730795a62161 100644 --- a/fs/sysv/dir.c +++ b/fs/sysv/dir.c @@ -34,21 +34,26 @@ static inline void dir_put_page(struct page *page) put_page(page); } -static int dir_commit_chunk(struct page *page, loff_t pos, unsigned len) +static void dir_commit_chunk(struct page *page, loff_t pos, unsigned len) { struct address_space *mapping = page->mapping; struct inode *dir = mapping->host; - int err = 0; block_write_end(NULL, mapping, pos, len, len, page, NULL); if (pos+len > dir->i_size) { i_size_write(dir, pos+len); mark_inode_dirty(dir); } - if (IS_DIRSYNC(dir)) - err = write_one_page(page); - else - unlock_page(page); + unlock_page(page); +} + +static int sysv_handle_dirsync(struct inode *dir) +{ + int err; + + err = filemap_write_and_wait(dir->i_mapping); + if (!err) + err = sync_inode_metadata(dir, 1); return err; } @@ -215,9 +220,10 @@ int sysv_add_link(struct dentry *dentry, struct inode *inode) memcpy (de->name, name, namelen); memset (de->name + namelen, 0, SYSV_DIRSIZE - namelen - 2); de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), inode->i_ino); - err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); + dir_commit_chunk(page, pos, SYSV_DIRSIZE); dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); + err = sysv_handle_dirsync(dir); out_page: dir_put_page(page); out: @@ -238,11 +244,11 @@ int sysv_delete_entry(struct sysv_dir_entry *de, struct page *page) err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); BUG_ON(err); de->inode = 0; - err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); + dir_commit_chunk(page, pos, SYSV_DIRSIZE); dir_put_page(page); inode->i_ctime = inode->i_mtime = current_time(inode); mark_inode_dirty(inode); - return err; + return sysv_handle_dirsync(inode); } int sysv_make_empty(struct inode *inode, struct inode *dir) @@ -272,7 +278,8 @@ int sysv_make_empty(struct inode *inode, struct inode *dir) strcpy(de->name,".."); kunmap(page); - err = dir_commit_chunk(page, 0, 2 * SYSV_DIRSIZE); + dir_commit_chunk(page, 0, 2 * SYSV_DIRSIZE); + err = sysv_handle_dirsync(inode); fail: put_page(page); return err; @@ -336,10 +343,11 @@ void sysv_set_link(struct sysv_dir_entry *de, struct page *page, err = sysv_prepare_chunk(page, pos, SYSV_DIRSIZE); BUG_ON(err); de->inode = cpu_to_fs16(SYSV_SB(inode->i_sb), inode->i_ino); - err = dir_commit_chunk(page, pos, SYSV_DIRSIZE); + dir_commit_chunk(page, pos, SYSV_DIRSIZE); dir_put_page(page); dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); + sysv_handle_dirsync(inode); } struct sysv_dir_entry * sysv_dotdot (struct inode *dir, struct page **p) From patchwork Wed Jan 18 17:30:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106743 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 aib29ajc244.phx1.oracleemaildelivery.com (aib29ajc244.phx1.oracleemaildelivery.com [192.29.103.244]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5FB7AC678DB for ; Wed, 18 Jan 2023 17:31:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=xyzvg/rCCly/SrrfRleNW2jwCQ0kCf7XT3oFjPPb4Ao=; b=zGqMEYPNK/XN2TrPGkJTsj5AekOhHligG+K41g+UWm4jF1ZE9l6PAc4+YZE628fz4KKlyTpStMS3 C/Z7eTMheNY8B6uU9h1oyJclY2c8CLzH7Livt07cwJ4vdLtSXPj50zb8hMCeKUUt/BzBcK/yF5Nm pPHbK96xWGDyDFfWDlzkIpwCjQ9BrgkYsOKpeO2rt5PonKyFARJVBYY4bIYLrP4HvnYil6+WUFNO hbOJOccTz5ogg/DaJTSbb2m0fhxSjdDRQ1AOG+yfNl/bSI79EsG/D5hf67WCSH3hbS1l8lYDw0CQ DUOjZh8e1xYpCrcJljzpWWa40VWJgpE0WDrKRg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=xyzvg/rCCly/SrrfRleNW2jwCQ0kCf7XT3oFjPPb4Ao=; b=tqyNZgm82qhRMw0hC3E6QZ658Z+l6LyqyP1urgwcQMG1L9+bLRWDXC9nxMNOnhqZ3JwNF+vp6Red zR+a4JoRGWriy+FQMZJaBOB86uiRSx9czhCYKkX7z1b13cXUrTCo0IHWPpZqk7i49yU1INBEHKUI LQ722T0PINJDEJ8HJX+1S3/5RI7+ptW0p/st+Eo5aAGWPx5lEHn1dfwWG8u67TQOoWq5Q063Y0/e pwEpRCdogaMMAsb2eXTrPiQB4gcceCmrdpDnQcOG+xnrhW/9L/05nzOaSV/W4DQekA8bBuArKBQN dj+onA7QYoAo6Pkm0+7mbpMipeRe2mwnbcJJQw== Received: by omta-ad1-fd1-101-us-phoenix-1.omtaad1.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO005SQZBTBR00@omta-ad1-fd1-101-us-phoenix-1.omtaad1.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:05 +0000 (GMT) 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=v3PglRWzIOokZtWskK857KErIsUBx1dUWoEIj+rmors=; b=U05qheovgxBUbMhTKKemw5ZM2W +lw1zqiSw0fTKUbYGe4qcdGWpVpSVtuCixVD8X05UaJPzH0rV12qgPwg6yrdCoj58546B7wZkvItN aFBV6i6UuPYSTlEDevcYjEqKtWYeXCL9YJuF2o0ktbYV85kZYtLzrPpqLCUnrQOdm9tdrLM0zEJTT YGK7YdkqWaEvFJ/1iWN+aLUbVyyZE/fW3pvAcev6gYBqg4UUNvQ7LL3/j/TMEsY9lwC2STBR+1xQ3 OAGX583TWkypdhRyd5ZIFMj5ZNc1iYMPGalHjY5KsPCHBup21MLTKOruniP8ileEqsqVnakRllDNF lm4B09wg==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:26 +0100 Message-id: <20230118173027.294869-7-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 bulkscore=0 adultscore=0 impostorscore=0 phishscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 clxscore=184 priorityscore=0 mlxscore=0 spamscore=0 mlxlogscore=416 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 6/7] ufs: don't flush page immediately for DIRSYNC directories X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-GUID: KVuykJSwydx4_jvdcZcxT23HLiuN9Z3n X-Proofpoint-ORIG-GUID: KVuykJSwydx4_jvdcZcxT23HLiuN9Z3n Reporting-Meta: AAEW5g+1e6Jr/1cRe95bTspHdlJLgYjsE32pYrSU2yNlNa1ff1DlOpYPWxamsKYz hlubtFaDqLsMSEBSdZaDEK5pw1DjoCV7m3bmquxrbD/wWJ+4AD815eUhWexkNW6E DN6n+lCUc+2odbEFPs8IfKoJmcGgpQbY0HuQujfJhv7xWwKrtC0kp3VX6q4sAuEP iYrJXrwm5Enl52WMMRBY5kIThF3DNRfh7VRfLrfAlTm6VA1nLzq9MbqGsGm/vBW+ Wv/i+hpLHVQTDnCYTAGIIjtcSAEpW4a5ge4oj8t5tvC1+DXq0f+QtmI1cK9oq0GB 63B6k+bKVaxPO1AN0B0hMqZd4uzkx3bJvr2w8P6JwXdyYA17AZG/G8e2cArKYqyG NJSR8ZtxQ68zpb2ylj6vNPW4fmrzGxYk5OV51iUQZ9hXqnfgNtgdK/C1i/7C6EMA xOlGS1gAnJz+qX/D/B/e8jkYZaINUzcF8u9wvVL04gOcdwKxIdTWsuRT+X9TbU/W NBU+v5Bsj/3iRj7qu7xQt1KvnxLepCvmUPHutBDwbLeK We do not need to writeout modified directory blocks immediately when modifying them while the page is locked. It is enough to do the flush somewhat later which has the added benefit that inode times can be flushed as well. It also allows us to stop depending on write_one_page() function. Ported from an ext2 patch by Jan Kara. Signed-off-by: Christoph Hellwig --- fs/ufs/dir.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c index 391efaf1d52897..379d75796a5ce3 100644 --- a/fs/ufs/dir.c +++ b/fs/ufs/dir.c @@ -42,11 +42,10 @@ static inline int ufs_match(struct super_block *sb, int len, return !memcmp(name, de->d_name, len); } -static int ufs_commit_chunk(struct page *page, loff_t pos, unsigned len) +static void ufs_commit_chunk(struct page *page, loff_t pos, unsigned len) { struct address_space *mapping = page->mapping; struct inode *dir = mapping->host; - int err = 0; inode_inc_iversion(dir); block_write_end(NULL, mapping, pos, len, len, page, NULL); @@ -54,10 +53,16 @@ static int ufs_commit_chunk(struct page *page, loff_t pos, unsigned len) i_size_write(dir, pos+len); mark_inode_dirty(dir); } - if (IS_DIRSYNC(dir)) - err = write_one_page(page); - else - unlock_page(page); + unlock_page(page); +} + +static int ufs_handle_dirsync(struct inode *dir) +{ + int err; + + err = filemap_write_and_wait(dir->i_mapping); + if (!err) + err = sync_inode_metadata(dir, 1); return err; } @@ -99,11 +104,12 @@ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, de->d_ino = cpu_to_fs32(dir->i_sb, inode->i_ino); ufs_set_de_type(dir->i_sb, de, inode->i_mode); - err = ufs_commit_chunk(page, pos, len); + ufs_commit_chunk(page, pos, len); ufs_put_page(page); if (update_times) dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); + ufs_handle_dirsync(dir); } @@ -390,10 +396,11 @@ int ufs_add_link(struct dentry *dentry, struct inode *inode) de->d_ino = cpu_to_fs32(sb, inode->i_ino); ufs_set_de_type(sb, de, inode->i_mode); - err = ufs_commit_chunk(page, pos, rec_len); + ufs_commit_chunk(page, pos, rec_len); dir->i_mtime = dir->i_ctime = current_time(dir); mark_inode_dirty(dir); + err = ufs_handle_dirsync(dir); /* OFFSET_CACHE */ out_put: ufs_put_page(page); @@ -531,9 +538,10 @@ int ufs_delete_entry(struct inode *inode, struct ufs_dir_entry *dir, if (pde) pde->d_reclen = cpu_to_fs16(sb, to - from); dir->d_ino = 0; - err = ufs_commit_chunk(page, pos, to - from); + ufs_commit_chunk(page, pos, to - from); inode->i_ctime = inode->i_mtime = current_time(inode); mark_inode_dirty(inode); + err = ufs_handle_dirsync(inode); out: ufs_put_page(page); UFSD("EXIT\n"); @@ -579,7 +587,8 @@ int ufs_make_empty(struct inode * inode, struct inode *dir) strcpy (de->d_name, ".."); kunmap(page); - err = ufs_commit_chunk(page, 0, chunk_size); + ufs_commit_chunk(page, 0, chunk_size); + err = ufs_handle_dirsync(inode); fail: put_page(page); return err; From patchwork Wed Jan 18 17:30:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Hellwig X-Patchwork-Id: 13106744 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 aib29ajc254.phx1.oracleemaildelivery.com (aib29ajc254.phx1.oracleemaildelivery.com [192.29.103.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 37C96C38147 for ; Wed, 18 Jan 2023 17:31:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=oss-phx-1109; d=oss.oracle.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=uFIfJZTxNMzakcMU5GTGdqmKGvvQwZnc6NLbwDpoeY0=; b=aHBGJ+1wm8FlOJ6KowxjzMR9UaiMVEPWyF6Iwm0CTY0TFq57aYcggKO9ssGk35WjenOi1Mx3pXhb xIYINyYT+IGlEym+R7kXNlKPA0MDIVvqYGHYKoVJys5ytkYvTMIqeTbjLcnLgSZFvbIJvid1wVBc aJMcihxEaZuZQsjVlVA4+vQ379PO+3KVm1AtBRRk48vo9mrjfflry2PdiY4Q9iK0xPBldpiVwkzw haLkxXwqZ3ykvXGWk7bvSoOBjqfXGas+YybH64G5Flchh7YoZcLYqZKBFEorGSfdBq8Lx5UlJPhx 3MR27v3nhVRmkX3msSwR+Ppyvrn/YrjJSV+wOg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=prod-phx-20191217; d=phx1.rp.oracleemaildelivery.com; h=Date:To:From:Subject:Message-Id:MIME-Version:Sender; bh=uFIfJZTxNMzakcMU5GTGdqmKGvvQwZnc6NLbwDpoeY0=; b=ENpCxAhNBB10BEQdAPerlzhCl5JommZjTNWMjsRIySLBJhZZUUN7Y/zIuq4VqYDGpqVTCrTYYh4C ryrrB9xkfCajsHqZdguCNiDbfnngy+cRltoKElOayou7fa1Dt9522kKLbAl/xVx3SMjq4yVTRX+j 6hqW0hB/OHflqehF0gXfbqG/pjlzwmSIra5U6SHPSJlJ01ImEFKMbBbjiWNlSye5SUclL+KvKky+ N3LIsnoYTzgkZoV6zIwERKnSmP5Fd2kUVOJKbCbSI9rwvajUQBW0lSTUTql4vNgRJ+pxqTiqV0Jx RiQaFOjoVquR+zlHJB0UwuPl/0sKzXx8OQFvAA== Received: by omta-ad3-fd3-301-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com (Oracle Communications Messaging Server 8.1.0.1.20221212 64bit (built Dec 12 2022)) with ESMTPS id <0ROO00HAFZBY59B0@omta-ad3-fd3-301-us-phoenix-1.omtaad3.vcndpphx.oraclevcn.com> for ocfs2-devel@archiver.kernel.org; Wed, 18 Jan 2023 17:31:10 +0000 (GMT) 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=jmbxaw5WGTdQC+qZyQllTG4rSUOzrNtp0wkWOB0SkzU=; b=t/tZrpSSAGJENEbey1iuxkY4ry DoU5y3Z4+8vXJK7yr+FX15ymQN81I4eYh+Ld5EsZ7QFqEDndjQwJk3U4pvySdS91GPbZqgEuJzKSc 3Hb+U6bsZh23jwkljYJIRJmeZmhtzKFA2xT/JLlfnDFLQzDCMBk0IwTSypcYjKrwmJgSb/gtP6Pxa vqIncS8uYulKZFlO9T7OpTj0BhbtHHGYpqhOlGXM2HT8Jx9qfzXF+bD/vDHXBFJZqpMAlFvudD4WT VHRCcgIEGkyXvIQnY4XTtcmPCC5sJHR2bvvK4vMMsHKgWPKo5D6SKWZhgAk4rd4Vnl+qQfpUU3NGd DadoCs/w==; To: Andrew Morton , Mark Fasheh , Joel Becker , Joseph Qi , Evgeniy Dushistov , "Matthew Wilcox (Oracle)" Date: Wed, 18 Jan 2023 18:30:27 +0100 Message-id: <20230118173027.294869-8-hch@lst.de> X-Mailer: git-send-email 2.39.0 In-reply-to: <20230118173027.294869-1-hch@lst.de> References: <20230118173027.294869-1-hch@lst.de> MIME-version: 1.0 X-Source-IP: 198.137.202.133 X-Proofpoint-Virus-Version: vendor=nai engine=6500 definitions=10594 signatures=596816 X-Proofpoint-Spam-Details: rule=tap_notspam policy=tap score=0 impostorscore=0 bulkscore=0 adultscore=0 mlxscore=0 lowpriorityscore=0 suspectscore=0 mlxlogscore=709 clxscore=239 malwarescore=0 phishscore=0 priorityscore=60 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301180148 Cc: linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, Jan Kara , ocfs2-devel@oss.oracle.com Subject: [Ocfs2-devel] [PATCH 7/7] ocfs2: don't use write_one_page in ocfs2_duplicate_clusters_by_page X-BeenThere: ocfs2-devel@oss.oracle.com X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Christoph Hellwig via Ocfs2-devel Reply-to: Christoph Hellwig Content-type: text/plain; charset="us-ascii" Content-transfer-encoding: 7bit Errors-to: ocfs2-devel-bounces@oss.oracle.com X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-ServerName: bombadil.infradead.org X-Proofpoint-SPF-Result: None X-Spam: Clean X-Proofpoint-ORIG-GUID: bZYzocttidcwiAijiD7-ZjmIIq_BIpeX X-Proofpoint-GUID: bZYzocttidcwiAijiD7-ZjmIIq_BIpeX Reporting-Meta: AAE4UilSdQ8UYp9Ztsby6U8NYi53W2Bhm4BrTEnuwRlu6qh/D5dX8vOp/B7aiGf5 /ewZTUO/2/9aYUD1J9fLrMRe6mzJSA0wi29lt11cCP3uS0pgLPqU+pOoQViM8Wmf VhKV0ZmCzuylXsweSnoNXHj/3RoXmFgTyfP0wrTZWv/ka9rB+/y6NkAwSa/0AOIu hMZex4HP0N11E2B1CsxP9YbJwKTXEukXm7lBT82O8iNgIronqhJ+BukgR4WxhhR6 4AV0Y4QOtko8HpiwuvNUKxEGnBD+fiBxHljoqReoXrZJI7t3h3Bxjyy9LVXTU73s xfC3np2gT3l8RnLYaISh0jBddYOHd/CLi/ootlVnXeouEOB3slrgqswEQVbYT6En Bj5qJ7SaxuAUtMOGAesIRje4AKRIPDgBOrbsdZS+PQjJGoaf21g+SW76SPJRdcFS N5TCDrABHfCQEZY9CQQrgg9CJX57YUYmSDpEzzUQZ++AVBsMc7O+ImLuoii6mtTX cQmHoB76mTlkfp+7R3QL4A3DB/D3mqCp8AGVAbGLVT8= Use filemap_write_and_wait_range to write back the range of the dirty page instead of write_one_page in preparation of removing write_one_page and eventually ->writepage. Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Reviewed-by: Joseph Qi --- fs/ocfs2/refcounttree.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fs/ocfs2/refcounttree.c b/fs/ocfs2/refcounttree.c index 623db358b1efa8..4a73405962ec4f 100644 --- a/fs/ocfs2/refcounttree.c +++ b/fs/ocfs2/refcounttree.c @@ -2952,10 +2952,11 @@ int ocfs2_duplicate_clusters_by_page(handle_t *handle, */ if (PAGE_SIZE <= OCFS2_SB(sb)->s_clustersize) { if (PageDirty(page)) { - /* - * write_on_page will unlock the page on return - */ - ret = write_one_page(page); + unlock_page(page); + put_page(page); + + ret = filemap_write_and_wait_range(mapping, + offset, map_end - 1); goto retry; } }