From patchwork Thu Apr 10 01:49:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luis Chamberlain X-Patchwork-Id: 14045745 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 BBDD7C369A5 for ; Thu, 10 Apr 2025 01:50:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A70856B024F; Wed, 9 Apr 2025 21:49:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 57EA86B02A1; Wed, 9 Apr 2025 21:49:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3A0C56B0250; Wed, 9 Apr 2025 21:49:57 -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 1518D6B02A3 for ; Wed, 9 Apr 2025 21:49:57 -0400 (EDT) Received: from smtpin22.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 3E7EFC18A9 for ; Thu, 10 Apr 2025 01:49:58 +0000 (UTC) X-FDA: 83316453276.22.E9FBC20 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf11.hostedemail.com (Postfix) with ESMTP id 5905340002 for ; Thu, 10 Apr 2025 01:49:56 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=rJPriUve; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf11.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744249796; a=rsa-sha256; cv=none; b=2QbPCUtPuwke5q8aOoKccYUOLgs68aQwGl0qnNy9YzhwHjwpGP16M6GbWBluYbFHevJAae 4hQu1XY6qTUFUUSol7u0K9evbH0D/RclMUChKjPlw/e2+aUorl9ZobM5JozLAw57PkJPh7 Wu8oYh/YnL1J6/XD0ANQrHucksNHguM= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=rJPriUve; dmarc=fail reason="No valid SPF, DKIM not aligned (relaxed)" header.from=kernel.org (policy=quarantine); spf=none (imf11.hostedemail.com: domain of mcgrof@infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=mcgrof@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744249796; h=from:from:sender: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=zXx4xaSMWMb3LOBQgWf2JR22pqZmwI+2jZSbXpELefQ=; b=XhVIfmWWvbgExSFBgH5UbaDpcRY4puR+jAfyI1OVVVXM8vY6gqJotd6ecnoBAKgwS2Z1Z5 V6tHh8rLURoRLzgyBFhgFUpaSjZIgm2nN/FmHtemxD0yGNyPzwCGUlq/p183zaaI8SYQui hhYCPXeI+MP53mMUmSFOxS6CoE4AbW8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Sender:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Reply-To:Content-Type:Content-ID:Content-Description; bh=zXx4xaSMWMb3LOBQgWf2JR22pqZmwI+2jZSbXpELefQ=; b=rJPriUvenypkpmUpeJ0u1yQNW6 9n/TNmnCNyxAF36Iu35qPLksZxeTJr7tDTlQwIFNI9iaqRDrB9jQDJrt6aCobuskV4GVxqAvKIyj6 rMFTAOA1pRqR1+VXmw4FKbHcWBf+LIhHQDeNTEfMh7UuXlvDEbSeeJ/4nTwum7x4jFMPCYPyQ4Iks ozYZuavJJYbt+dWMjbQD5S1TERtIeXXcyMMeCw4UzZ0Ni2ls+jzz94syh2MkBvyTwoEnj2dLqRUDE zn8L6hnMpDY++pw8sgot2giYHriNA8aCLi69OBqzcBgj33tG0d0DRoVZCSPNjc5BzJawmDd3aZ/xP VxFWWpRA==; Received: from mcgrof by bombadil.infradead.org with local (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2h36-00000008yvQ-04S3; Thu, 10 Apr 2025 01:49:48 +0000 From: Luis Chamberlain To: brauner@kernel.org, jack@suse.cz, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org, riel@surriel.com Cc: dave@stgolabs.net, willy@infradead.org, hannes@cmpxchg.org, oliver.sang@intel.com, david@redhat.com, axboe@kernel.dk, hare@suse.de, david@fromorbit.com, djwong@kernel.org, ritesh.list@gmail.com, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-mm@kvack.org, gost.dev@samsung.com, p.raghav@samsung.com, da.gomez@samsung.com, mcgrof@kernel.org Subject: [PATCH v2 6/8] fs/ext4: use sleeping version of __find_get_block() Date: Wed, 9 Apr 2025 18:49:43 -0700 Message-ID: <20250410014945.2140781-7-mcgrof@kernel.org> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250410014945.2140781-1-mcgrof@kernel.org> References: <20250410014945.2140781-1-mcgrof@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 5905340002 X-Stat-Signature: ipb94nnofpg15j66ekogysn1aq3piheh X-Rspamd-Pre-Result: action=add header; module=dmarc; Action set by DMARC X-Rspam: Yes X-HE-Tag: 1744249796-543494 X-HE-Meta: U2FsdGVkX1/1HV+QE8zolP3Hik4NtUW94HbHfN33SI5MnTiDeLwQNbGwq3b3BhX4xmBqRTBRM6GVHDAhmdj5fR8IuF/xtbZEg3BdKRK7F26mwFyTG4G999A3dBhw77TD3cVcvackYyEO1jL/A9TutHk/73RDwoAvrhM6mG1oL6wUCKo7PA9UQlEMheMTzE8HX+4cWj+p34IzS1TxUqi5B8oouBbMfseeGxLzzneyFE3H2JWjr9P9cW15LwSfGvTy4oqle3TcmGkVk5I2GjPeRnYWimhsG5PBaVxKxRU1lPTNV7BtfQAhjTQtr6/z1/jrMTCU962UrLjfKxxGxSgJYIvp3FR2NWdyT8vNRTfkVoK7hnYj3yvC5GkjZXzxqAx9omMtqXrhKxh7LTlXX25gzmbs1Wnr0ASKTeiDMucDUuhjompgEhESRdST3KRwBjacQT75fra07uoggRQuu5u+86N6URPVGhkESDdl8q0tB1LDqd9PcYR2nEZacnseRzwiss1ylztApwnjgI8d1xgwkJDD7envU8zenTk8w6xHRlRLKsC+nc4RP7thOtbIiDiu36dn9PSPjwupEXQnFj6oVLjV85Ey/cxqs3wgRbU/3+z3RM0SH9x1H/zL0JVNDz9otzCGMpJKRmqeFMrrRhEKOv16Hiepyctx1i1gCczKa/dquaYNQf2qAzVci709iaDiakmE3Ro/+gdvaO0/QN8u5RmX/8DpyGOocVpph6BdLU144s29yipcdOQ4gJMWmSfw54Zi2aAMthJ5wVzvyZKx/+JIky4eEFsKUOebvegt21D+/rCO6WPtqYPaXPCiVSutThh4/MxDXHynHzBldUUbxiYnji9Oy7+gpmnRM2u/QIWGT2M4Tyc/cM4t7ar+xYK9qvtZkLE/4zo9W55X/7DBzJb2EN5HkuzTfCjk6F1n59pbRY/jB6ogaMZ0HLrDEolCHzY7l9lMJAkRjzqvrvS fweS2oDR x+xpZvAofsdFV0MUza7H/MEvg1VzoDFIf/MKHAWXQLBC7ZweOTz51tlTxX554VZHPSnkv9dvIB/nWLVNSt2ZSYwF7mLIjv0M0bNNkN7qy3y2/kkqqvvdcS2ocvUVcBRts5qasreSd/ClCTyefCmMgGUy5Uv8AEwVqgEbzmcxm4i1KIuXHv8FvCTEJGjBzxSxX41vMFOf8iAbMSZRNZJ9vULMT+N4vwRGxVNxgoI5YlUZPNr1Dbm5b9kr/BeKB3Y3Z/gaC5bSxj3GAdejw1oy90EvrpPXZxjLTqqle8rg/djDnb6bZVaCc6r+e3VXRPx9N6VJAcVDEGUNkfS5bD+LkwtjIuaiRuoyG/g2VMM4VejyDP/xAOGWnz8Qpx74pbxdwmJpsJxPEkmVm+LPWD9ufUR+FmZhiBSf94zYQCukKQI2+QW6SXMQ4DpSc0QJyOFtn/lSKHtQXfsukeknW4cGIZUla13HtOctSaLIAoafH+pTK1dk3rTnZqFHoKpOEUknmZdiIETYwJPs9x7Die8KOFEHot3PkqFJQeY1JWTasXTxaqP3rmHyrb0OdTPYK1NcaBPPgJ6lL9bBhDDI3ibsK+/EtmHdeXO1MYalp X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Davidlohr Bueso Trivially introduce the wrapper and enable ext4_free_blocks() to use it, which has a cond_resched to begin with. Convert to the new nonatomic flavor to benefit from potential performance benefits and adapt in the future vs migration such that semantics are kept. Suggested-by: Jan Kara Signed-off-by: Davidlohr Bueso Signed-off-by: Luis Chamberlain --- fs/ext4/inode.c | 2 ++ fs/ext4/mballoc.c | 3 ++- include/linux/buffer_head.h | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 1dc09ed5d403..b7acb5d3adcb 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -860,6 +860,8 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode, return sb_find_get_block(inode->i_sb, map.m_pblk); /* + * Potential TODO: use sb_find_get_block_nonatomic() instead. + * * Since bh could introduce extra ref count such as referred by * journal_head etc. Try to avoid using __GFP_MOVABLE here * as it may fail the migration when journal_head remains. diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 0d523e9fb3d5..6f4265b21e19 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -6644,7 +6644,8 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode, for (i = 0; i < count; i++) { cond_resched(); if (is_metadata) - bh = sb_find_get_block(inode->i_sb, block + i); + bh = sb_find_get_block_nonatomic(inode->i_sb, + block + i); ext4_forget(handle, is_metadata, inode, bh, block + i); } } diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 2b5458517def..8db10ca288fc 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h @@ -399,6 +399,12 @@ sb_find_get_block(struct super_block *sb, sector_t block) return __find_get_block(sb->s_bdev, block, sb->s_blocksize); } +static inline struct buffer_head * +sb_find_get_block_nonatomic(struct super_block *sb, sector_t block) +{ + return __find_get_block_nonatomic(sb->s_bdev, block, sb->s_blocksize); +} + static inline void map_bh(struct buffer_head *bh, struct super_block *sb, sector_t block) {