[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20240821112254.624814-1-zhaoyang.huang@unisoc.com>
Date: Wed, 21 Aug 2024 19:22:54 +0800
From: "zhaoyang.huang" <zhaoyang.huang@...soc.com>
To: Baolin Wang <baolin.wang@...ux.alibaba.com>,
"Theodore Ts'o"
<tytso@....edu>,
Andreas Dilger <adilger.kernel@...ger.ca>,
<linux-fsdevel@...r.kernel.org>, <linux-ext4@...r.kernel.org>,
Zhaoyang Huang
<huangzhaoyang@...il.com>, <steve.kang@...soc.com>
Subject: [RFC PATCH 1/1] fs: ext4: Don't use CMA for buffer_head
From: Zhaoyang Huang <zhaoyang.huang@...soc.com>
cma_alloc() keep failed in our system which thanks to a jh->bh->b_page
can not be migrated out of CMA area as the jh has one cp_transaction
pending on it. We solve this by launching jbd2_log_do_checkpoint forcefully
somewhere. Since journal is common mechanism to all JFSs and
cp_transaction has a little fewer opportunity to be launched, this patch
would like to have buffer_head of ext4 not use CMA pages.
Signed-off-by: Zhaoyang Huang <zhaoyang.huang@...soc.com>
---
fs/ext4/inode.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 941c1c0d5c6e..4422246851fe 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -869,7 +869,11 @@ struct buffer_head *ext4_getblk(handle_t *handle, struct inode *inode,
if (nowait)
return sb_find_get_block(inode->i_sb, map.m_pblk);
+#ifndef CONFIG_CMA
bh = sb_getblk(inode->i_sb, map.m_pblk);
+#else
+ bh = sb_getblk_gfp(inode->i_sb, map.m_pblk, 0);
+#endif
if (unlikely(!bh))
return ERR_PTR(-ENOMEM);
if (map.m_flags & EXT4_MAP_NEW) {
--
2.25.1
Powered by blists - more mailing lists