]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Sep 2022 11:56:03 +0000 (13:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 27 Sep 2022 11:56:03 +0000 (13:56 +0200)
added patches:
ext4-make-directory-inode-spreading-reflect-flexbg-size.patch

queue-5.19/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch [new file with mode: 0644]
queue-5.19/series

diff --git a/queue-5.19/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch b/queue-5.19/ext4-make-directory-inode-spreading-reflect-flexbg-size.patch
new file mode 100644 (file)
index 0000000..a82e75c
--- /dev/null
@@ -0,0 +1,39 @@
+From 613c5a85898d1cd44e68f28d65eccf64a8ace9cf Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Thu, 8 Sep 2022 11:21:26 +0200
+Subject: ext4: make directory inode spreading reflect flexbg size
+
+From: Jan Kara <jack@suse.cz>
+
+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 <stefan.wahren@i2se.com>
+Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
+Cc: stable@kernel.org
+Link: https://lore.kernel.org/all/0d81a7c2-46b7-6010-62a4-3e6cfc1628d6@i2se.com/
+Signed-off-by: Jan Kara <jack@suse.cz>
+Link: https://lore.kernel.org/r/20220908092136.11770-3-jack@suse.cz
+Signed-off-by: Theodore Ts'o <tytso@mit.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/ext4/ialloc.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/ext4/ialloc.c
++++ b/fs/ext4/ialloc.c
+@@ -510,7 +510,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;
index 2454f7feb6295375d8347f2dbbf42e6e22bef48a..35d82f1ed0403f8cf4451f9605e7ce147a5d5103 100644 (file)
@@ -205,3 +205,4 @@ ext4-use-locality-group-preallocation-for-small-closed-files.patch
 ext4-use-buckets-for-cr-1-block-scan-instead-of-rbtree.patch
 revert-block-freeze-the-queue-earlier-in-del_gendisk.patch
 ext4-fixup-possible-uninitialized-variable-access-in-ext4_mb_choose_next_group_cr1.patch
+ext4-make-directory-inode-spreading-reflect-flexbg-size.patch