From 4f4e5146b28b41f67de4961bb0c86734b6bb6997 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 27 Sep 2022 13:55:19 +0200 Subject: [PATCH] 4.9-stable patches added patches: ext4-make-directory-inode-spreading-reflect-flexbg-size.patch --- ...-inode-spreading-reflect-flexbg-size.patch | 39 +++++++++++++++++++ queue-4.9/series | 1 + 2 files changed, 40 insertions(+) create mode 100644 queue-4.9/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch diff --git a/queue-4.9/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch b/queue-4.9/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch new file mode 100644 index 00000000000..2b460c491a7 --- /dev/null +++ b/queue-4.9/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch @@ -0,0 +1,39 @@ +From 613c5a85898d1cd44e68f28d65eccf64a8ace9cf Mon Sep 17 00:00:00 2001 +From: Jan Kara +Date: Thu, 8 Sep 2022 11:21:26 +0200 +Subject: ext4: make directory inode spreading reflect flexbg size + +From: Jan Kara + +commit 613c5a85898d1cd44e68f28d65eccf64a8ace9cf upstream. + +Currently the Orlov inode allocator searches for free inodes for a +directory only in flex block groups with at most inodes_per_group/16 +more directory inodes than average per flex block group. However with +growing size of flex block group this becomes unnecessarily strict. +Scale allowed difference from average directory count per flex block +group with flex block group size as we do with other metrics. + +Tested-by: Stefan Wahren +Tested-by: Ojaswin Mujoo +Cc: stable@kernel.org +Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/ +Signed-off-by: Jan Kara +Link: https://lore.kernel.org/r/20220908092136.11770-3-jack@suse.cz +Signed-off-by: Theodore Ts'o +Signed-off-by: Greg Kroah-Hartman +--- + fs/ext4/ialloc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/ext4/ialloc.c ++++ b/fs/ext4/ialloc.c +@@ -511,7 +511,7 @@ static int find_group_orlov(struct super + goto fallback; + } + +- max_dirs = ndirs / ngroups + inodes_per_group / 16; ++ max_dirs = ndirs / ngroups + inodes_per_group*flex_size / 16; + min_inodes = avefreei - inodes_per_group*flex_size / 4; + if (min_inodes < 1) + min_inodes = 1; diff --git a/queue-4.9/series b/queue-4.9/series index addd053d7d8..eff6cd6723e 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -18,3 +18,4 @@ serial-create-uart_xmit_advance.patch serial-tegra-use-uart_xmit_advance-fixes-icount.tx-accounting.patch s390-dasd-fix-oops-in-dasd_alias_get_start_dev-due-to-missing-pavgroup.patch drivers-hv-never-allocate-anything-besides-framebuff.patch +ext4-make-directory-inode-spreading-reflect-flexbg-size.patch -- 2.47.3